① Add definitions in include/configs/smdk2416.h:
# Defineconfig_usb_ohci
# Defineconfig_usb_storage
# Defineconfig_dos_partition
# Defineconfig_support_vfat
# Definelittleendian
And
# Defineconfig_0000_usb
# Defineconfig_pai_fat
Open the common/makefile and add
Cobjs-$ (config_0000_usb) + = pai_usb.o
② According to the 2416 user manual, configure the relevant clock and system registers. The specific configuration will not be described here;
③ Change the link address to a physical address. The Code sent by Samsung using the core Board uses the MMU function. The link address is 0xc3e00000, and changed to 0x33e00000;
④ Disable D-Cache and disable MMU (or set MMU ing to platform ing mode, that is, ing)
⑤ Pay attention to your compiler version. The Compiler may bring you a very depressing problem, so that you cannot find the answer to the problem. Here, I compiled and can normally use the 3.3 and 3.4.5 compilers with soft floating point respectively. In addition, there is still a problem: You cannot normally identify a USB flash drive below 2 GB. the Kingston 2 gb usb flash drive needs to be identified twice. The first time is usually a timeout failure, 4G and 8g USB flash disks have no problems.
⑥ Check whether your benchmark latency function is 1 us. If the deviation is too large, the cumulative Deviation during data reading from the USB flash disk is too large and cannot be synchronized with the USB bus, then you will not be able to read the data.
The above for the 2416 platform to achieve u-boot-1.3.4 support U disk need to focus on a few issues. Hope to help anyone in need!
Who solved the problems left by myself in step 5? Please let me know. Thank you!