uboot开发笔记一之ralink mt7620编译

参考:

1.MTK_Ralink_ApSoC_SDK_4200_20131106.tar.bz2,这个ralink的sdk网上有,自行搜索;

MTK_Ralink_ApSoC_SDK_4200_20131106/Uboot

MTK_Ralink_ApSoC_SDK_4200_20131106/RT288x_SDK/toolchain/buildroot-gcc463/usr/bin

2.ASUS wireless router  rt-n14u  or rt-n56u GPL source :GPL_RT_N14U_30043784850.zip;GPL_RT_N56U_30043786065.zip;

GPL_RT_N14U_30043784850/src-ra-mt7620/uboot_mt7620

GPL_RT_N14U_30043784850/asuswrt/tools/buildroot-gcc342/bin

u-boot for mt7620 with uip 代码

https://github.com/cleanwrt/u-boot_mt7620

编译步骤:MTK_Ralink_ApSoC_SDK
export PATH=$PATH:~/MTK_Ralink_ApSoC_SDK_4200_20131106/RT288x_SDK/toolchain/buildroot-gcc463/usr/bin
make distclean
make menuconfig ---根据mt7620板子进行选择,生成.config文件,或者直接使用附录的.config文件
make CROSS_COMPILE=mipsel-linux-
编译步骤:ASUS wireless router  rt-n14u
export PATH=$PATH:~/asuswrt/tools/buildroot-gcc342/bin
cp config_14u .config 
or 
make menuconfig---根据mt7620板子进行选择,生成.config文件,或者直接使用附录的.config文件
make CROSS_COMPILE=mipsel-linux-
编译说明:
1.需要使用MTK_Ralink_ApSoC_SDK_4200_20131106里面的交叉编译工具链MTK_Ralink_ApSoC_SDK_4200_20131106/RT288x_SDK/toolchain/buildroot-xxx/usr/bin,使用openwrt最新的工具链,编译失败;
2.这份uboot代码在中文linux操作系统下,有下面这个bug:./tools/mkimage: invalid entry point -n
./tools/mkimage -A mips -T standalone -C none \
-a 0x80200000 -e \
-n "SPI Flash Image" \
-r DDR -s 16 -t 64 -u 32 \
-y 0xFF -z 0xFF -w 0xFF -d uboot.bin uboot.img
./tools/mkimage: invalid entry point -n
Makefile:256: recipe for target 'uboot.img' failed
make: *** [uboot.img] Error 1
Makefile
# -a $(TEXT_BASE) -e $(shell readelf -h u-boot | grep "Entry" | awk '{print $$4}') \
--->
-a $(TEXT_BASE) -e $(shell LANG=en_US readelf -h u-boot | grep "Entry" | awk '{print $$4}')
or
-a $(TEXT_BASE) -e $(shell readelf -h u-boot | grep "0x80200000" | awk '{print $$2}') \
在生成镜像的最后一步报告"invalid entry point -n"错误
http://www.oschina.net/question/1401799_178896
报告错误部分的源代码位于mkimage.c,相关程序如下所示(看样子是参数错误),
后来我将*argv全部打印出来发现:在ubuntu12.04下,Makefile文件中执行的语句展开后是
mkimage -A mips -O linux -T kernel -C lzma -a 80000000 -e 0x8000c310 -n "Linux Kernel Image" -d /home/usrname/Documents/RT288x_SDK/source/images/zImage.lzma /home/usrname/Documents/RT288x_SDK/source/images/usrname_uImage
argc的值是18,第12个参数“-e”后面紧接着的是代表入口地址的16进制参数;
但是在ubuntu14.04下,Makefile文件中执行的语句展开后是
mkimage -A mips -O linux -T kernel -C lzma -a 80000000 -e -n "Linux Kernel Image" -d /home/usrname/Documents/RT288x_SDK/source/images/zImage.lzma /home/usrname/Documents/RT288x_SDK/source/images/usrname_uImage
argc的值是17,正是“-e”参数后缺少了入口地址参数,而紧接着“-n”。所以程序就报告了“ nvalid entry point -n”,但是为何会缺少一个参数?
答案就在Makefile里面找。Makefile中通过$(shell readelf -h $(ROOTDIR)/$(LINUXDIR)/vmlinux | grep "Entry" | awk '{print $$4}') 查找入口点地址,但是我们在ubuntu14.04中readelf文件vmlinux才发现Entry竟然被汉化成了“入口点地址”,所以grep Entry肯定找不到啦。最后把“Entry”改成“入口点地址”,再把$$4改成$$2就可以完成编译了。
u-boot_mt7620$ readelf -h u-boot
ELF 头:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (可执行文件)
Machine: MIPS R3000
Version: 0x1
入口点地址: 0x80200000
程序头起点: 52 (bytes into file)
Start of section headers: 508308 (bytes into file)
标志: 0x50000005, noreorder, cpic, mips32
本头的大小: 52 (字节)
程序头大小: 32 (字节)
Number of program headers: 2
节头大小: 40 (字节)
节头数量: 25
字符串表索引节头: 22
mt7620uboot_asuswrt$ LANG=en_US readelf -h u-boot
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: MIPS R3000
Version: 0x1
Entry point address: 0x80200000
Start of program headers: 52 (bytes into file)
Start of section headers: 414864 (bytes into file)
Flags: 0x50000005, noreorder, cpic, mips32
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 2
Size of section headers: 40 (bytes)
Number of section headers: 25
Section header string table index: 22
这种问题着实让人哭笑不得,看来做开发的系统最好还是别汉化。开发中出现疑难异常问题的时候也可以从系统的语言环境考虑下。

附 mt7620的uboot的.config文件

$ cat .config 
#
# Automatically generated by make menuconfig: don't edit
#
CONFIG_CROSS_COMPILER_PATH="/opt/buildroot-gcc342/bin"
ASIC_BOARD=y
# RT2880_ASIC_BOARD is not set
# RT3350_ASIC_BOARD is not set
# RT3052_ASIC_BOARD is not set
# RT3352_ASIC_BOARD is not set
# RT3883_ASIC_BOARD is not set
# RT5350_ASIC_BOARD is not set
# RT6855A_ASIC_BOARD is not set
MT7620_ASIC_BOARD=y
MT7620_MP=y
P5_MAC_TO_NONE_MODE=y
# P5_MAC_TO_PHY_MODE is not set
# P5_RGMII_TO_MAC_MODE is not set
# P5_MII_TO_MAC_MODE is not set
# P5_RMII_TO_MAC_MODE is not set
P4_MAC_TO_NONE_MODE=y
# P4_MAC_TO_PHY_MODE is not set
# P4_RGMII_TO_MAC_MODE is not set
# P4_MII_TO_MAC_MODE is not set
# P4_RMII_TO_MAC_MODE is not set
# ON_BOARD_NAND_FLASH_COMPONENT is not set
ON_BOARD_SPI_FLASH_COMPONENT=y
# ON_BOARD_SDR is not set
# ON_BOARD_DDR1 is not set
ON_BOARD_DDR2=y
# ON_BOARD_256M_DRAM_COMPONENT is not set
ON_BOARD_512M_DRAM_COMPONENT=y
# ON_BOARD_1024M_DRAM_COMPONENT is not set
# ON_BOARD_2048M_DRAM_COMPONENT is not set
# ON_BOARD_DDR_WIDTH_8 is not set
ON_BOARD_DDR_WIDTH_16=y
ON_BOARD_16BIT_DRAM_BUS=y
PDMA_NEW=y
RX_SCATTER_GATTER_DMA=y
UBOOT_RAM=y
# UBOOT_ROM is not set
# DUAL_IMAGE_SUPPORT is not set
# LAN_WAN_PARTITION is not set
TEXT_BASE=0x80200000

uboot开发笔记一之ralink mt7620编译相关推荐

  1. Qt之手写识别开发笔记:Zinnia介绍、编译、使用以及Demo

    若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/ ...

  2. android开发笔记之高通MSM8909编译刷机脚本

    高通平台的编译和MTK的编译还是有一些不同,多了一些项,并且打包生成的刷机文件也是分散在各个地方,导致这个好像非常玄,弄的我也是老问人,非常不好意思. 这二天,自己看了一下的脚本,搞的非常复杂,自己把 ...

  3. RK3568开发笔记(四):在虚拟机上使用SDK编译制作uboot、kernel和buildroot镜像

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/125844240 红胖子网络科技博文大全:开发技术集合( ...

  4. RK3568开发笔记(五):在虚拟机上使用SDK编译制作uboot、kernel和ubuntu镜像

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/127783966 红胖子网络科技博文大全:开发技术集合( ...

  5. H3核心板开发笔记(一):编译及烧写方式

    系统配置文件路径:tools/pack/chips/sun8iw7p1/configs/dolphin/sys_config.fex linux 内核: linux-3.4 u-boot: brand ...

  6. DS1819 对应版本的FFMPEG_OpenCV开发笔记(七十):红胖子带你傻瓜式编译VS2017x64版本的openCV4...

    若该文为原创文章,转载请注明出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/107837715 各位读者,知识无穷而人力有穷,要 ...

  7. Android开发笔记(七十)反编译初步

    查看平台源码 查看内核源码 Android的内核源码很大,有几个G,仔细找找网上有许多下载的地方.作为普通开发者,一般不需要阅读内核源码,但一点都不了解好像也不行,因为实际开发中有时候就得会那么一点点 ...

  8. Hi3516开发笔记(十一):通过HiTools使用网口将uboot、kernel、roofts烧写进eMMC

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/128425000 红胖子(红模仿)的博文大全:开发技术集 ...

  9. JRtplib开发笔记(二):JRtplib库编译、示例演示

    原博主博客地址:https://blog.csdn.net/qq21497936 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/84 ...

最新文章

  1. 2014 Multi-University Training Contest 1 Summary By Luke
  2. Java高级特性——反射
  3. 计算机应用基础图表填空,计算机应用基础填空题.doc
  4. markdown写小于等于号(等于贴着角)\leqslant
  5. 11.正则返回不是组的内容
  6. 【OR】YALMIP安装及使用
  7. Linux设置终端快捷键
  8. 解除excel打开密码
  9. 看看这篇ARM体系结构你就都明白了
  10. 【愚人节专场】Java实现定时发送小情话
  11. MarkDown Pad2的Windows秘钥
  12. js实现中英文切换(jquery.i18n.js)
  13. new open SQL ABAP语法错误,逗号和转义符变量 when escaped, all host variables must be escaped using@
  14. 云原生社区 meetup 第四期广州站报名中
  15. Udemy上最好的JavaScript课程之一,强烈推荐新手入门学习
  16. 【学习总结】企业信息化管理之数据管理发展与探索之路
  17. 数据结构题集(c语言版)第2章:线性表
  18. 办公室建模,vue2+three.js
  19. EasyRecovery15易恢复新版数据恢复软件
  20. Hermit插值曲线代码与显示效果

热门文章

  1. wordpress博客主题_柚子皮5.7PJ无限制版,笑话段子主题模板
  2. Map双列集合的用法,遍历方法
  3. Sicily Hansel and Grethel
  4. Finereport10.0破解版没啥用,你为啥还在寻找Finereport破解版呢?
  5. BBB学习(二):BBB介绍
  6. Oracle游标和游标变量
  7. 共享计算机网络无法连接网络设置,局域网电脑无法共享文件夹、不能相互访问等问题解决方法汇总...
  8. geo数据差异分析_答疑呀嘿丨如何对GEO数据库的数据进行差异表达基因分析?
  9. osgi.wiring.package; ((osgi.wiring.package=com.adobe.cq.sightly)(version=2.2.0)(!(version=3.0.0))
  10. JAVA32位的如何换成64位的_教你怎么把win732位换成64位