Transplant Uboot2016.09 to FriendlyARM Nano2410

概述

手头有一个很老的FriendlyARM Nano2410 板子,本着节约不浪费并学习的目的,尝试移植uboot和linux到此板子上,以此博文记录整个移植过程。
板子照片:
FriendlyARM Nano2410 2.0 SDK40
到官网上查过该板子相关资料,貌似已经被清掉,所以只能用一些类似CPU的板子资料和百度上的相关搜索结果来作为参考。

uboot基础代码

通过搜索,选取了GitLab里面的uboot稳定版本u-boot-2016.09.y作为基础代码:
https://gitlab.denx.de/u-boot/u-boot/tree/u-boot-2016.09.y

交叉编译工具链

arm交叉编译工具链:
arm-none-linux-gnueabi-gcc-4.4.3
我的编译环境是:
$ uname -a
Linux dijj-VirtualBox 4.15.0-55-generic #60-Ubuntu SMP Tue Jul 2 18:22:20 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

参考smdk2410,进行拷贝修改

  1. 创建config文件
    cp configs/smdk2410_defconfig configs/nano2410_defconfig
    修改nano2410_defconfig内容
  2. \board\samsung\nano2410
  3. include\configs\nano2410.h
  4. arch/arm/Kconfig
  5. arch/arm/include/asm/mach-types.h
    具体代码后面上传。

编译

1.编译命令

make nano2410_defconfig*

make

2.issues
(1) u-boot: Not enough room for program headers, try linking with -N

/home/jiujun.di/arm2410/toolchain/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-ld.bfd: u-boot: Not enough room for program headers, try linking with -N
/home/jiujun.di/arm2410/toolchain/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-ld.bfd: final link failed: Bad value
Makefile:1198: recipe for target 'u-boot' failed
make: *** [u-boot] Error 1

Solution:
修改顶层Makefie,修改如下:

+785:LDFLAGS_u-boot += $(call ld-option, --no-dynamic-linker)
 786:ifneq ($(CONFIG_SYS_TEXT_BASE),)
 787:LDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE)
 788:endif

添加上785行就可以了

(2)

烧写

烧写S3C2410 NANDFLASH,使用的是并口jtag转接板,如下图:
在这里插入图片描述
从下面的网址下载H-JTAG 使用:
http://www.hjtag.com/xz.asp?typeid=21
H-JTAG V3.0.0 正式版 [2014-04-22发布]

烧写过程中遇到很多问题,现记录如下:
(1)打开H-JTAG后无法切换到LPT模式,提示“Unable to load h-jtag LPT driver,only USB mode is support ”
在这里插入图片描述
solution: 电脑使用的是WIN7 64位,貌似H-Jtag 对其还不支持,电脑重装了winxp系统后这个问题就没有了。
(2)unable to find target
在这里插入图片描述
solution:需要对LPT settings进行配置,具体配置如下:
在这里插入图片描述

调试

(1)uboot烧入NAND Flash后无串口打印
Root Cause:
https://www.cnblogs.com/zhyy-mango/p/9451821.html
由于该板子只有NAND flash,没有Nor Flash,而uboot只支持NorFlash启动,所以参照上面的移植过程,加入对nand启动的支持,但是启动后无串口打印。通过加入点亮led方式定位汇编代码,发现NAND flash的读操作代码有问题。
Solution:
上面参考网址里使用的是2440 cpu,在nand控制器这块跟2410有区别,多了一个寄存器,所以按照2410控制器设置下即可解决。

(2)uboot启动到 “WARNING: Caches not enabled” 停止住
Root Cause:
uboot里面有重定位操作,在做NAND启动移植代码时我添加了拷贝nand代码到0x31f00000内存位置,而uboot本身的重定位操作也是选择这个地址附近位置进行拷贝重定位,所以覆盖了一些代码。
Solution:
将TEXT_BASE 起始代码位置改为内存的低地址位置:0x30a00000,然后uboot可以正常启动工作了。
工作打印如下:

启动的串口打印

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值