#include #include int portwidth = 1; int chipwidth = 1; static void flash_make_cmd(unsigned int cmd, void *cmdbuf) { int i; int cword_offset; int cp_offset; unsigned char val; unsigned char *cp = (unsigned char *) cmdbuf; for (i = portwidth; i > 0; i--){ cword_offset = (portwidth-i)%chipwidth; #if defined(__LITTLE_ENDIAN) || defined(CFG_WRITE_SWAPPED_DATA) cp_offset = portwidth - i; val = *((unsigned char*)&cmd + cword_offset); #else cp_offset = i - 1; val = *((unsigned char*)&cmd + sizeof(unsigned long) - cword_offset - 1); #endif cp[cp_offset] = (cword_offset >= sizeof(unsigned long)) ? 0x00 : val; } } int main(void) { int i; unsigned char buf[8]; memset(buf, 0, 8); flash_make_cmd(0xf0, &buf); for (i = 0; i < 8; i++) printf("%d -> %02x\n", i, buf[i]); return 0; }