单片机
返回首页

玩转mini2440开发板之【编译烧录rootfs根文件系统全过程记录】

2022-05-10 来源:eefocus

前段时间研究了一下如何使用busybox编译和生成最简linux根文件系统(rootfs),并在mini2440开发板上使用NFS网络文件系统进行挂载启动,今天继续研究如何将该根文件系统烧录到开发板上去,以便实现本地启动,无需借助NFS。


第1步、生成rootfs根文件系统

这一步可参考我另一篇博客(如何使用busybox编译和生成最简linux根文件系统(rootfs))中的方法和步骤。如果想简单起见,也可直接下载我已经编译好的成果(mini2440最精简的rootfs文件系统)。里面的压包解开来就是一个rootfs根文件系统的全部目录,可以直接用于下一步的操作。


第2步、生成img镜像文件

这里我们按照友善之臂的官方推荐,使用mkyaffs2image工具。首先将光盘里的mkyaffs2image.tgz解压出来。具体方法是,进入到mkyaffs2image.tgz所在的目录,然后使用下面的命令:


sudo tar -xvzf mkyaffs2image.tgz -C /


便可将压缩包里的工具解压到/usr/sbin目录下了。注意此处会解压出2个文件,分别是:


usr/sbin/mkyaffs2image

usr/sbin/mkyaffs2image-128M

其中第一个mkyaffs2image是制作适用于NANDFLASH为64M版本文件系统映象的工具,mkyaffs2image-128M则是 制作适用于128M/256M/512M/1GB版本文件系统映象的工具。由于我本人的开发板是64M的版本,因此以下我直接使用mkyaffs2image,请各位根据自己的情况调整。


然后进入到你所生成好的rootfs根文件系统所在的目录,比如我的就放在/opt/FriendlyARM/mini2440目录下,采用mkyaffs2image工具直接进行打包即可:


leon@Ubuntu:/opt/FriendlyARM/mini2440$ mkyaffs2image rootfs rootfs.img

mkyaffsimage: image building tool for YAFFS built Apr 29 2008

Processing directory rootfs into image file rootfs.img

Object 257, rootfs/sys is a directory

Object 258, rootfs/.ash_history is a file, 1 data chunks written

Object 259, rootfs/sbin is a directory

Object 260, rootfs/sbin/loadkmap is a symlink to '../bin/busybox'

Object 261, rootfs/sbin/blockdev is a symlink to '../bin/busybox'

Object 262, rootfs/sbin/mkdosfs is a symlink to '../bin/busybox'

Object 263, rootfs/sbin/klogd is a symlink to '../bin/busybox'

Object 264, rootfs/sbin/mdev is a symlink to '../bin/busybox'

Object 265, rootfs/sbin/lsmod is a symlink to '../bin/busybox'

【这里略去1234567.......】

Object 649, rootfs/usr/bin/beep is a symlink to '../../bin/busybox'

Object 650, rootfs/usr/bin/unexpand is a symlink to '../../bin/busybox'

Object 651, rootfs/usr/bin/sort is a symlink to '../../bin/busybox'

Object 652, rootfs/usr/bin/xargs is a symlink to '../../bin/busybox'

Object 653, rootfs/usr/bin/uuencode is a symlink to '../../bin/busybox'

Object 654, rootfs/usr/bin/unxz is a symlink to '../../bin/busybox'

Object 655, rootfs/usr/bin/free is a symlink to '../../bin/busybox'

Object 656, rootfs/usr/bin/rx is a symlink to '../../bin/busybox'

Object 657, rootfs/usr/bin/sha256sum is a symlink to '../../bin/busybox'

Object 658, rootfs/linuxrc is a symlink to 'bin/busybox'

Operation complete.

402 objects in 13 directories

12103 NAND pages

FriendlyARM Computer Technology Inc.


工具就会将rootfs目录打包成一个img镜像文件,如下:


leon@Ubuntu:/opt/FriendlyARM/mini2440$ ll

总用量 6276

drwxrwxr-x  8 leon leon    4096  8月 15 16:13 ./

drwxr-xr-x  4 leon leon    4096  8月 15 10:47 ../

drwxrwxr-x 11 leon leon    4096 10月  6  2017 rootfs/

-rw-------  1 leon leon 6390384  8月 15 16:13 rootfs.img


第3步、将镜像文件烧录到开发板中

这里我使用的boot是supervivi及其配套的下载工具,具体的步骤请参见我的另一篇博客(如何在64位WIN7/WIN10系统中安装mini2440开发板的USB驱动和调试工具)。


给开发板上电,串口端会输出以下提示信息:


##### FriendlyARM BIOS for 2440 #####

[x] bon part 0 320k 2368k

[v] Download vivi 

[k] Download linux kernel 

[y] Download root_yaffs image 

[a] Absolute User Application

[n] Download Nboot 

[l] Download WinCE boot-logo

[w] Download WinCE NK.bin 

[d] Download & Run 

[z] Download zImage into RAM 

[g] Boot linux from RAM 

[f] Format the nand flash 

[b] Boot the system 

[s] Set the boot parameters 

[u] Backup NAND Flash to HOST through USB(upload) 

[r] Restore NAND Flash from HOST through USB 

[q] Goto shell of vivi 

[i] Version: 1026-12

Enter your selection: 


直接输入y,启动下载流程。然后在SuperViVi USB Transfer Utility中,点击upload选择img镜像文件即可。

这里写图片描述

将rootfs根文件系统下载至开发板

这里写图片描述

同时,串口助手端也会给出信息:


Now, Downloading [ADDRESS:30000000h,TOTAL:6390394]

Downloaded file at 0x30000000, size = 6390384 bytes

Flash params: oobsize = 16, oobblock = 512, erasesize = 16384, partition size = 61456384

Erasing and programming NAND with yaffs image

 Block erasing(addr/count) --- Block bad(addr/count) --- Block processed/All(%)

--------------------------------------------------------------------------------

     0x03ff8000/03749            0x030e8000/00002           03751/03751=100%

Load yaffs OK:

Blocks scanned: 3751, Blocks erased: 3749, Blocks are bad: 2

RECEIVED and Writed FILE SIZE: 6390394 (156KB/S, 40S)


然后给开发板断电重启,就会看到所下载的rootfs根文件系统已经稳稳的运行在你的mini2440开发板中了。


[root@LEON2440 ~]# ls -l

total 3928

drwxrwxr-x    1 1000     1000           512 Feb  3  2017 bin

-rw-rw-r--    1 1000     1000            71 Oct  3  2017 changelog@leon

drwxr-xr-x    2 root     root             0 Jan  1 00:00 dev

drwxrwxr-x    1 1000     1000           512 Feb  3  2017 etc

lrwxrwxrwx    1 1000     1000            11 Feb  3  2017 linuxrc -> bin/busybox

drwx------    1 root     root           512 Jan  1 00:00 lost+found

drwxrwxr-x    1 1000     1000           512 Oct  3  2017 mnt

dr-xr-xr-x   25 root     root             0 Jan  1 00:00 proc

drwxrwxr-x    1 1000     1000           512 Feb  3  2017 sbin

drwxr-xr-x   11 root     root             0 Jan  1 00:00 sys

drwxr-xr-x    2 root     root             0 Jan  1 00:00 tmp

-rw-rw-r--    1 1000     1000       1751132 Feb  4  2017 uImage.img

drwxrwxr-x    1 1000     1000           512 Feb  3  2017 usr

进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 1瓦四级调频发射机

  • 500W MOS场效应管电源逆变器,12V转110V/220V

  • 12V 转 28V DC-DC 变换器(基于 LM2585)

  • 红外开关

  • 12V转110V/220V 500W逆变器

  • DS1669数字电位器

    相关电子头条文章