一、u-boot-1.1.4在yl2410上的移植过程:1.例行准备3.2.1修改Makefile[uboot@localhostuboot]#viMakefile#为crane2410建立编译项yl2410_config:unconfig@./mkconfig$(@:_config=)armarm920tyl2410NULLs3c24x0各项的意思如下:arm:CPU的架构(ARCH)arm920t:CPU的类型(CPU),其对应于cpu/arm920t子目录。yl2410:开发板的型号(BOARD),对应于board/yl2410目录。NULL:开发者/或经销商(vender)。s3c24x0:片上系统(SOC)。3.2.2在board子目录中建立yl2410#cprfboard/smdk2410board/yl2410#cdboard/yl2410#mvsmdk2410.cyl2410.c3.2.3在include/configs/中建立配置头文件#cd../..#cpinclude/configs/smdk2410.hinclude/configs/yl2410.h3.2.4指定交叉编译工具的路径#vi~/.bashrcexportPATH=/usr/local/arm/2.95.3/bin:$PATH3.2.5测试编译能否成功#makeyl2410_config/*产生include/config.mk*/#make1.在make的过程中,出现:cc1:invalidoption`abi=apcs-gnu'解决方法:出错的文件是/cpu/s3c44b0/下的config.mk:将PLATFORM_CPPFLAGS+=$(callcc-option,-mapcs-32,-mabi=apcs-gnu)改成:PLATFORM_CPPFLAGS+=$(callcc-option,-mapcs-32,$(callcc-option,-mabi=apcs-gnu),)2.修改了第一个错误后,继续make,出现了如下的报错:make[1]:***Noruletomaketarget`hello_world.srec',neededby`all'.Stop.make[1]:Leavingdirectory`/home/mort/src/targa/u-boot/u-boot-TOT/examples'make:***[examples]Error2解决方法:修改examples/Makefile把126行和129行改为:%.srec:%.o%.bin:%.o继续make3.出现crane2410.aneededbysmdk2410.o解决方法:修改board/crane2410/Makefile将28行的OBJS:=smdk2410.oflash.o改为OBJS:=crane2410.oflash.o继续make获得u-boot4.初步调试,主要是在sdram上调试要打开CONFIG_SKIP_LOWLEVEL_INIT即可看到打印信息5.读写NorFlash(SST39VF1601)在include/configs/yl2410.h添加#ifdefCONFIG_SST_39VF1601#definePHYS_FLASH_SIZE0x00200000/*2MB*/#defineCFG_MAX_FLASH_SECT(35)/*maxnumberofsectorsononechip*/#defineCFG_ENV_ADDR(CFG_FLASH_BASE+0x1F0000)/*addrofenvironment*/#endif修改board/yl2410/flash.c参考board/dave/common/flash.c#elifdefined(CONFIG_SST_39VF1601)(SST_MANUFACT&FLASH_VENDMASK)|(SST_ID_xF1601&FLASH_TYPEMASK);在intflash_erase(flash_info_t*info,ints_first,ints_last)#ifdefined(CONFIG_SST_39VF1601)/*Ali+*/*addr=CMD_ERASE_BLOCK;#else*addr=CMD_ERASE_CONFIRM;#endif在volatilestaticintwrite_hword(flash_info_t*info,ulongdest,ushortdata)#ifdefined(CONFIG_SST_39VF1601)/*Ali+*/MEM_FLASH_ADDR1=CMD_PROGRAM;#elseMEM_FLASH_ADDR1=CMD_UNLOCK_BYPASS;*addr=CMD_PROGRAM;#endif即可正确操作flash,其中monitor_flash_len(_bss_start-_armboot_start)和环境参数保存区是受保护的,标示为(RO)6.从norflash启动打开选项CONFIG_S3C2410_NOR_BOOT编译生成u-boot.binLoadb0x32000000115200(setbaudrateto115200,downloadu-bootto0x32000000byKermitprotocol)Cp.b0x3200000000x20000(u-bootwritetonorflash)重启,OK7.如要看到调试信息在include/configs/yl2410.h添加#defineDEBUG8.打ping命令时,输出“***ERROR:`ethaddr'notset”,板上网卡CS8900本身没有固化MAC地址,自己在include/configs/yl2410.h设定一个,或者运行时设定环境参数,接下来使用ping和tftp都正常9.支持nandflash读写在include/configs/yl2410.h添加CFG_CMD_NAND编译,在cmd_nand.c产生很多错误,原因是yl2410根本就没有nandflash的驱动支持,如:NAND_DISABLE_CE()NAND_ENABLE_CE()NAND_WAIT_READY()WRITE_NAND_COMMAND()WRITE_NAND_COMMANDW()WRITE_NAND_ADDRESS()WRITE_NAND()这些函数的实现都很简单,参考at91rm9200dk.h,对nand的驱动支持全部添加在include/configs/yl2410.h加载运行,nandwrite0x320000000x200000x200(向nandflash写512字节),报错,nand_write_page:Failedwriteverify,应该是sector(page)没擦除,nanderase0x200000x200,出错,提示边界没对...