微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > AM335x(TQ335x)学习笔记——u-boot-2014.10移植

AM335x(TQ335x)学习笔记——u-boot-2014.10移植

时间:11-28 来源:互联网 点击:

  1. re_module_pin_mux(mmc1_pin_mux);
  2. #endif
  3. }elseif(board_is_gp_evm(header)){
  4. /*GeneralPurposeEVM*/
  5. unsignedshortprofile=detect_daughter_board_profile();
  6. configure_module_pin_mux(rgmii1_pin_mux);
  7. configure_module_pin_mux(mmc0_pin_mux);
  8. /*Inprofile#2i2c1andspi0conflict.*/
  9. if(profile&~PROFILE_2)
  10. configure_module_pin_mux(i2c1_pin_mux);
  11. /*Profiles2&3donthaveNAND*/
  12. #ifdefCONFIG_NAND
  13. if(profile&~(PROFILE_2|PROFILE_3))
  14. configure_module_pin_mux(nand_pin_mux);
  15. #endif
  16. elseif(profile==PROFILE_2){
  17. configure_module_pin_mux(mmc1_pin_mux);
  18. configure_module_pin_mux(spi0_pin_mux);
  19. }
  20. }elseif(board_is_idk(header)){
  21. /*IndustrialMotorControl(IDK)*/
  22. configure_module_pin_mux(mii1_pin_mux);
  23. configure_module_pin_mux(mmc0_no_cd_pin_mux);
  24. }elseif(board_is_evm_sk(header)){
  25. /*StarterKitEVM*/
  26. configure_module_pin_mux(i2c1_pin_mux);
  27. configure_module_pin_mux(gpio0_7_pin_mux);
  28. configure_module_pin_mux(rgmii1_pin_mux);
  29. configure_module_pin_mux(mmc0_pin_mux_sk_evm);
  30. }elseif(board_is_bone_lt(header)){
  31. /*BeagleboneLTpinmux*/
  32. configure_module_pin_mux(i2c1_pin_mux);
  33. configure_module_pin_mux(mii1_pin_mux);
  34. configure_module_pin_mux(mmc0_pin_mux);
  35. #ifdefined(CONFIG_NAND)
  36. configure_module_pin_mux(nand_pin_mux);
  37. #elifdefined(CONFIG_NOR)
  38. configure_module_pin_mux(bone_norcape_pin_mux);
  39. #else
  40. configure_module_pin_mux(mmc1_pin_mux);
  41. #endif
  42. }else{
  43. puts("Unknownboard,cannotconfigurepinmux.");
  44. hang();
  45. }
  46. }

另外,这个版本的u-boot有个bug,需要修改fat_register_device(fs/fat/fat.c)函数:

  1. intfat_register_device(block_dev_desc_t*dev_desc,intpart_no)
  2. {
  3. disk_partition_tinfo;
  4. /*FirstcloseanycurrentlyfoundFATfilesystem*/
  5. cur_dev=NULL;
  6. /*Readthepartitiontable,ifpresent*/
  7. if(get_partition_info(dev_desc,part_no,&info)){
  8. /*if(part_no!=0){
  9. printf("**Partition%dnotvalidondevice%d**",
  10. part_no,dev_desc->dev);
  11. return-1;
  12. }*/
  13. info.start=0;
  14. info.size=dev_desc->lba;
  15. info.blksz=dev_desc->blksz;
  16. info.name[0]=0;
  17. info.type[0]=0;
  18. info.bootable=0;
  19. #ifdefCONFIG_PARTITION_UUIDS
  20. info.uuid[0]=0;
  21. #endif
  22. }
  23. returnfat_set_blk_dev(dev_desc,&info);
  24. }

至此,u-boot就已经可以启动了,但是有多余的步骤和log,不过可以去掉,修改file_fat_read_at(fs/fat/fat.c)函数:

  1. longfile_fat_read_at(constchar*filename,unsignedlongpos,void*buffer,
  2. unsignedlongmaxsize)
  3. {
  4. debug("reading%s",filename);
  5. returndo_fat_read_at(filename,pos,buffer,maxsize,LS_NO,0);
  6. }

最后,TQ335x是MLO启动u-boot,然后u-boot去启动内核,故可以去掉配置项CONFIG_SPL_OS_BOOT,具体的修改文件include/configs/ti_armv7_common.h:

  1. #ifdefined(CONFIG_SPL_OS_BOOT_ENABLE)
  2. #defineCONFIG_SPL_OS_BOOT
  3. #endif

至此,u-boot的移植工作就完成了,编译方法如下:

  1. makeARCH=armCROSS_COMPILE=arm-linux-gnueabi-am335x_evm_defconfig
  2. makeARCH=armCROSS_COMPILE=arm-linux-gnueabi--j8


其中,arm-linux-gnueabi-需要根据自己的交叉编译工具链前缀进行修改。完成u-boot的移植工作后我们来研究如何启动内核。

源码下载地址:

u-boot-2014.10 for TQ335x/TQ3358(SD卡启动)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top