[嵌入式] 重温Mini2440(一)移植U-Boot

一. 前言

Mini2440所搭载的s3c2440早已停产,但是平台会过时技术不会过时,还是具有一定的学习意义,最后发挥一次这块开发板的余热吧。
U-Boot涉及的技术是裸机开发,实际工作中U-Boot主要是作为工具使用,利用tftp和nfs来下载内核和挂载根文件系统,此篇只记录U-Boot的常用方法,移植后面再研究。

二. 下载U-Boot

1. 编译

此文使用Tekkaman开源的u-boot for mini2440,可到此处下载
解压后手动编译,需要事先安装交叉编译工具。

make ARCH=arm CROSS_COMPILE=arm-linux- mini2440_config
make ARCH=arm CROSS_COMPILE=arm-linux- all

编译完成后在当前目录生成u-boot.bin

在这里插入图片描述

2. 烧录

使用J-Link烧写bin文件到Mini2440的NOR flash
将u-boot.bin写进开发板后,上电后开发板蜂鸣器会响1秒,同时在终端打印数据,在1秒内按下任意按键可以进入命令模式。

U-Boot 2010.03 (507 2021 - 14:09:38)

 modified by tekkamanninja (tekkamanninja@163.com)
 Love Linux forever!!

I2C:   ready
DRAM:  64 MB
Flash:  2 MB
NAND:  256 MiB
Video: 240x320x16 20kHz 62Hz
In:    serial
Out:   serial
Err:   serial
USB slave is enable!
Net:   dm9000
U-Boot 2010.03 (507 2021 - 14:09:38)
modified by tekkamanninja
(tekkamanninja@163.com)
Love Linux forever!!
Hit any key to stop autoboot:  0
[u-boot@MINI2440]#
[u-boot@MINI2440]#

三. 使用U-Boot

1. 设置网络地址

根据实际情况设置IP地址

[u-boot@MINI2440]# setenv ipaddr 192.168.15.233
[u-boot@MINI2440]# setenv gatewayip 192.168.15.1
[u-boot@MINI2440]# setenv serverip 192.168.15.230
[u-boot@MINI2440]# setenv netmask 255.255.255.0
[u-boot@MINI2440]# saveenv
Saving Environment to NAND...
Erasing Nand...
Erasing at 0x6000000000002 --   0% complete.
Writing to Nand... done
[u-boot@MINI2440]# printenv

2. ping命令

尝试ping通服务器(ip地址就是上面设置的serverip)

[u-boot@MINI2440]# ping 192.168.15.230
dm9000 i/o: 0x20000300, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 08:08:11:18:12:27
operating at 100M full duplex mode
Using dm9000 device
host 192.168.15.230 is alive

注意:只能u-boot去ping别的机器,别的机器无法ping通u-boot,因为u-boot未作处理

3. tftp命令

要验证u-boot的tftp功能,服务器Linux需要安装tftp服务

1. 安装服务:
sudo apt install tftpd-hpa

2. 创建tftp服务目录:
mkdir /home/lps/tftp
chmod 777 /home/lps/tftp

vim /etc/default/tftpd-hpa
3. 内容修改为:
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/lps/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"

4. 重新启动TFTP服务
sudo service tftpd-hpa restart

然后就可以在u-boot里使用tftp命令下载文件到开发板的内存上,最后写进nand flash

[u-boot@MINI2440]# 
tftp 0x30008000 u-boot.bin
nand erase 0 0x60000
nand write 0x30008000 0 0x60000

tftp 0x30008000 uImage
nand erase 0x80000 0x500000
nand write 0x30008000 0x80000 0x500000

tftp 0x30008000 rootfs.img
nand erase 0x580000 $filesize
nand write.yaffs 0x30008000 0x580000 $filesize

也可以使用tftp方式来加载内核并启动,需要设置u-boot:

[u-boot@MINI2440]# 
setenv bootcmd 'tftp 0x30008000 uImage;bootm 0x30008000'
saveenv

4. nfs命令

首先服务器也需要安装nfs服务,可参考此文

然后u-boot就可以利用nfs命令下载文件,同tftp类似
指令格式为nfs [loadAddress] [[hostIPaddr:]bootfilename]

在这里插入图片描述
如果可以下载成功,说明nfs功能已经没有问题,此时设置u-boot启动参数就可以实现nfs加载内核以及挂载根文件系统,IP地址需要区分好客户端ip和服务端ip:

[u-boot@MINI2440]# 
setenv bootcmd 'nfs 0x30008000 192.168.15.230:/home/lps/rootfs/uImage;bootm'
setenv bootargs noinitrd root=/dev/nfs rw nfsroot=192.168.15.230:/home/lps/rootfs,nolock ip=192.168.15.233:192.168.15.230:192.168.15.1:255.255.255.0:mini2440:eth0:off console=ttySAC0,115200 init=/linuxrc
saveenv

5. nand flash启动

如果不想利用网络方式启动内核和挂载根文件系统,则需要u-boot设置启动参数:

[u-boot@MINI2440]# 
setenv bootcmd 'nand read 0x30008000 0x80000 0x500000;bootm 0x30008000'
setenv bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200

需要确保nand flash已经成功烧写上内核和根文件系统镜像,如果有出现坏块或者文件系统无法挂载,可以尝试格式化nand flash后再重新烧写

[u-boot@MINI2440]# nand scrub

四. 屏蔽蜂鸣器

此版本u-boot在每次上电蜂鸣器都会响一小会,开发板的蜂鸣器控制引脚是GPB0,如果要让u-boot安静启动,只需要更改GPBDAT寄存器相关代码即可

  • board/tekkamanninja/mini2440/mini2440.c
168 #if     defined(CONFIG_MINI2440_LED)
169         gpio->GPBDAT = 0x00000180; //禁止蜂鸣器 0x00000181->0x00000180
170 #endif
  • lib_arm/board.c
145 #if defined(CONFIG_MINI2440_LED)        
146         struct s3c24x0_gpio * const gpio = s3c24x0_get_base_gpio();
147         writel(0x100, &gpio->GPBDAT);  //禁止蜂鸣器 0x101->0x100
148 #endif
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值