fl2440烧写Linux最小系统

硬件准备

fl2440开发板,USB转串口线,j-link烧录工具,PC机,带RJ45水晶头的网线

软件准备

准备好j-link和USB转串口线的驱动程序,tftpd32服务器程序

#jlink工具
https://coding.net/u/sfantree/p/self_use_OSS/git/raw/master/software/JLinkARM_V410i.zip
#360驱动大师
http://dl.360safe.com/drvmgr/360DrvMgrInstaller_beta.exe

下载烧录所需的二进制文件

#bootsrap
wget ftp://iot-yun.sfantree.com/fl2440_tools/images/bootstrap-s3c2440.bin
#uboot
wget ftp://iot-yun.sfantree.com/fl2440_tools/images/u-boot-s3c2440.bin
#内核
wget ftp://iot-yun.sfantree.com/fl2440_tools/images/linuxrom-s3c2440.bin
#根文件系统
wget ftp://iot-yun.sfantree.com/fl2440_tools/images/rootfs-ubifs.bin

编译

以上均是郭工提供好的二进制文件,有强迫症的同学可以选择自己编译

uboot
wget http://ftp.denx.de/pub/u-boot/u-boot-2010.09.tar.bz2
#wget https://coding.net/u/sfantree/p/self_use_OSS/git/raw/master/source/u-boot-2010.09.tar.bz2
tar xvjf u-boot-2010.09.tar.bz2
wget https://coding.net/u/sfantree/p/self_use_OSS/git/raw/master/source/u-boot-2010.09-fl2440.patch
cd u-boot-2010.09
patch -p1 < ../u-boot-2010.09-fl2440.patch
make fl2440_config
make -j
sz u-boot-s3c2440.bin
kernel
yum install uboot-tools -y
#sudo apt install u-boot-tools
#https://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.54.tar.xz
#https://mirrors.tuna.tsinghua.edu.cn/kernel/v3.0/linux-3.0.54.tar.xz
wget https://mirrors.ustc.edu.cn/kernel.org/linux/kernel/v3.0/linux-3.0.54.tar.xz
xz -d linux-3.0.54.tar.xz
tar xvf linux-3.0.54.tar
wget https://coding.net/u/sfantree/p/self_use_OSS/git/raw/master/source/linux-3.0.54_yaffs2.patch
cd linux-3.0.54
patch -p1 < ../linux-3.0.54_yaffs2.patch
make 
sz kernel-s3c2440.bin

ubuntu 16.04 编译报错

kernel/timeconst.pl line 373 Makefile:945: recipe for target 'kernel' failed

解决方法,修改源码目录kernel/timeconst.pl中第373行的defined()去掉只留下@val就可以了

根文件系统
#rootfs
mkdir mkrootfs && cd mkrootfs
wget https://coding.net/u/sfantree/p/self_use_OSS/git/raw/master/source/build.sh
bash build.sh
wget https://coding.net/u/sfantree/p/self_use_OSS/git/raw/master/source/rootfs_tree.tar.bz2
tar xjf rootfs_tree.tar.bz2
mtd-utils-1.4.9/mkfs.jffs2 -n -s 2048 -e 128KiB -d ./rootfs_tree -o rootfs.jffs2 --pad=0x1400000
mtd-utils-1.4.9/sumtool -e 128KiB  -p -i rootfs.jffs2 -o rootfs_sum.jffs2
sz rootfs_sum.jffs2

烧录

若上电后开发板屏幕显示企鹅(已成功加载linux内核),需要将nandflash格式化后才能完整烧录

格式化

若上电后开发板屏幕显示企鹅(已成功加载linux内核),需要将nandflash格式化后才能完整烧录,格式化的方式为进入uboot后nand scrub

jlink烧录

格式化重启后开发板会进入白屏(变砖),打开J-Link ARM V4.10i.exe

speed 12000
loadbin F:\linux\bootstrap-s3c2440.bin 0
setpc 0
g
loadbin F:\linux\u-boot-s3c2440.bin 33f80000
setpc 33f80000
g

此时bootstrap-s3c2440.bin会初始化CPU和DRAM,以便利用更大的地址空间,重新将u-boot-s3c2440.bin烧录后,串口会输出相关信息,通过串口将u-boot-s3c2440.bin写入nandflash中方便断电后自动加载

网络传输

执行下一步之前需要用网线将开发板连接至PC,uboot下print命令中serverip与ipaddr表示PC
机器IP与开发板IP,并保证其在同一个网段上,开启PC上的tftpd服务器并且关闭windows防火墙

tftp 30008000 u-boot-s3c2440.bin
nand erase 0 100000 
nand write 30008000 0 100000

接下来jlink使命就完成了。断电后断开jlink插口的连接,重新上电后进入uboot

烧录linux内核

tftp 30008000 linuxrom-s3c2440.bin 
nand erase 100000
nand write 30008000 100000 900000

烧录根文件系统

tftp 30008000 rootfs-ubifs.bin
nand erase 1000000
nand write 30008000 1000000 900000

fl2440烧写Linux最小系统》上有1条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注