嵌入式基础学习-完整体验

系统由uboot、内核、文件系统三个部分组成,完整体验过程就是对三个部分分别进行打补丁、编译和烧写。另外体验简单驱动和网络文件系统使用。

使用的虚拟机是Ubuntu18.04,arm-linux-gcc等工具用的现成的,把目录加入环境变量就可用,需要装一些32位库
sudo apt install lib32ncurses5

1.U-Boot编译

tar xjf u-boot-1.1.6.tar.bz2
cd u-boot-1.1.6
patch -p1 < ../u-boot-1.1.6_jz2440.patch  //-p1 表示忽略第一级目录
make 100ask24x0_config
make

2.uImage编译

tar xjf linux-2.6.22.6.tar.bz2
cd linux-2.6.22.6
patch -p1 < ../linux-2.6.22.6_jz2440.patch
mv ../4.3寸LCD_mach-smdk2440.c arch/arm/mach-s3c2440/mach-smdk2440.c //替换4.3寸源码
cp config_ok .config
make uImage  //在arch/arm/boot目录下生成uImage

编译linux2.6.22.6出错:mixed implicit and normal rules: deprecated syntax

  1. 系统的make工具太新,需要修改如下两行:
    #416行前面加个%:
    %config %config: scripts_basic outputmakefile FORCE
    #1449 行去掉前面的/ :
    %/: prepare scripts FORCE
    
  2. 编译后没有uImage文件: 需要在u-boot-1.1.6目录下执行make all,编译后会在tools中生成一个mkimage工具,将其拷贝到环境变量目录下(arm-linux工具bin)

3.文件系统编译

分为yaffs2和jffs2两种格式,只尝试了用mkyaffs2image工具编译最小文件系统。

mkyaffs2image fs_mini_mdev xz.yaffs2

驱动

//使用测试程序,在虚拟机编译
make    //编译出*.ko文件
arm-linux-gcc -o firstdrvtest firstdrvtest.c
//在开发板上
insmod first_drv.ko
./firstdrvtest on    //点亮LED

nfs网络文件系统挂载

文件系统位置设置:
	set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.11:/home/xz/Work/nfs_root/tmp/fs_mini_mdev ip=192.168.1.12:192.168.1.11:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
同样如果是jffs2格式的话要加 rootfstype=jffs2
	set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.11:/home/xz/Work/nfs_root/tmp/fs_mini_mdev ip=192.168.1.12:192.168.1.11:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0 rootfstype=jffs2
板子上启动 (rootfstype=jffs2):
	set bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0

查看可挂载目录 exportfs
虚拟机挂载命令 mount -t nfs serverIp:/shared /挂在哪
开发板挂载命令 mount -t nfs -o nolock,vers=2 serverIP:/shared /mnt

你可能感兴趣的:(硬件)