嵌入式linux学习笔记
时间:10-02
整理:3721RD
点击:
我是电子专业出身,以前一直搞得是单片机,51,stm32等等,后来听说了嵌入式,自己想好好学学。看看到网上都是关于ARM的资料,然后就想学,学习不仅要理论而且要实践,所以就想买块开发板,但是看网上都贵,然后经过对比,自己就选择了mini2440,自己还想找个视频教程学学,听师兄说,韦东山的视频讲的不错,所以就下载了韦东山的视频。开始用mini2440的视频资料搭载环境,
本来想直接利用韦东山老师的虚拟机,但是想想还是自己装一个,体验体验。本人使用的VM虚拟机,系统 ubuntu 9.10,(参照韦老师的视频)
硬件:mini2440
系统:ubuntu 9.10
交叉编译器和linux内核就采用韦东山老师推荐用的:arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2 linux-2.6.22.6.tar.bz2(为了和视频保持一致,便于学习)
1.首先自己下载vm虚拟机,然后在下载ubuntu镜像。
2虚拟机的安装百度一下就会有教程,对于ubuntu安装也是一样的,就不在赘述。
说明:安装ubuntu的时候,尽量把软件安装全,不然到时用其中的一些功能时,没有的话影响后面的开发.尤其是对刚开始学嵌入式,然后安装开发环境时,还出现问题,就比较蛋疼。
韦老师推荐终端工具 SecureCRT 5.2 和 CuteFTP 9,其界面比较友好,所以自己就下了这两个工具。
下面就是今天的正题:
一.首先安装交叉编译工具链
1)通过CuteFTP 9将arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2放到linux服务器上,就是ubuntu,在其下建立work目录。
2)解压arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2,命令为tar xjf arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2。
3)将其路径加入环境变量vi /etc/profile 下
if [ "$EUID" = "0" ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
pathmunge /opt/work/gcc-3.4.5-glibc-2.3.6/bin
4)加入 /work/gcc-3.4.5-glibc-2.3.6/bin ,然后是环境变量生效 service /etc/profile start 输入arm-linux-gcc -v 就可以看到版本号了
二.然后进行u-boot的编译,我直接用的是韦老师的u-boot(因为韦老师的u-boot基本上通吃所有2440)
1) 解压 tar xjf u-boot-1.1.6.tar.bz2
2) 进入 cd u-boot-1.1.6
3) 给u-boot 打补丁 patch -p1 < ../u-boot-1.1.6_jz2440.patch
4) make 100ask24x0_config
5) 编译 make 就会生成U-boot.bin文件,因为本身mini2440的norflash有其自带的u-boot,所以我将自己编译的u-boot烧入nand flash
三. 修改编辑并编译你的内核 (我直接用韦老师光盘中的linux版本,为了和其保持一致便于学习)
1) 解压 tar xjf linux-2.6.22.6.tar.bz2
2) 进入 cd linux-2.6.22.6
3) 打补丁 patch -p1 < ../linux-2.6.22.6_jz2440.patch
4) 把韦老师网盘上下载的mini2440源码\drivers_and_test\10th_lcd\4th\lcd.c复制到内核driver/video,并修改driver/video/Makefile
obj-$(CONFIG_FB_S3C2410) += lcd.o
5) 把 mini2440源码\drivers_and_test\DM9000 网卡驱动复制到内核对应net目录,由于对应Makefile已经修改过了,所以就不需要重新修改,直接使用就行
6) 内核根目录的配置 cp config_ok .config(一定不能忘记这点!)
7) make uImage最后在arch/arm/生成uImage 通过 CuteFTP 9考到windows这边进行烧写
四.烧写uboot
烧写方法有2种:
a)就是用mini2440norflash自带的u-boot,然后通过dnw进行烧写
b)用opengtig 进行烧写
因为没买openjtg所以就用第一种方法烧写成功后,重启开发板(nand启动),按住空格,就会看到菜单,其中就有烧写linux内核和根文件系统的命令。
五.烧写内核
a)使用的是u-boot的菜单命令加dnw进行下载烧写
b)用opengtig 进行烧写
六.烧写文件系统
我选用韦老师网盘中的文件系统fs_mini_mdev.yaffs2文件,使用的是u-boot的菜单命令加dnw进行下载烧写
七.设置nfs网络文件启动,因为服务器的硬盘大,等到以后进行开发,你就体会到网络文件的好处了
1) 首先要在PC的linux上新建一个共享文件夹 root_nfs,然后设置这个共享文件的属性,然后将从韦东山的网盘后下载的文件系统fs_mini_mdev解压到此目录,即可。
vi /etc/exports 如果第一次打开应该是空文件夹 填写内容:/work/nfs_root *(rw,sync,no_root_nfs)
/work/nfs_root表示 nfs 共享目录,它可以作为开发板的根文件系统通过nfs挂载,载设置u-boot的启动参数,就可以以网络文件系统挂载了。所以路径要修改成是你要挂载的文件夹
解释:/work/nfs_root *(rw,sync,no_root_nfs) 的意思其中:* 表示所有的客户机都可以挂载此目录 ,rw表示挂接此目录的客户机对该目录有读写的权力 ,root_nfs
表示允许挂接此目录的客户机享有该主机的 root 身份
通过命令启动和停止 nfs 服务 在PC上的linux输入 /etc/init.d/nfs start 是打开linux的nfs系统服务
2)在开发板的 SecureCRT 界面挂载你的共享目录 mount -t nfs -o nolock,vers=2 192.168.1.108(这是PC上linux的IP地址):/work/nfs_root /mnt
3)cd /mnt 看看能不能打开,你可以测试在PC的共享目录下新建一个vi hello.c 就会在板子上的/mnt中出现
4)启动开发板,进入u-boot,按q,设置参数如
set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.108:/work/nfs_root/fs_mini_mdev ip=192.168.1.17:192.168.1.108:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
这是输入boot重新启动开发板,此时就会以nfs网络文件启动开发板,接下来就是你的嵌入式开发之路了,哈哈哈哈哈哈哈哈哈。
注意!:
1.我刚开始挂接时出现了失败,原来是防火墙没关,这个要特别注意,许多人就是因为这,一直挂接不上。关闭命令 sudo ufw disable,如果你想永远关闭的话,可以写个脚本,进行启动设置即可。
2.还有就是网关,开发板,pc机,虚拟机,IP地址一定要处于用一网关,PC机最好不要自动获取IP自己设置最好,例如:PC机IP 192.168.1.111 虚拟机IP为192.168.1.110,开发板IP192.168.1.17这样就可以
最后,希望各位为大神,批评指正,欢迎交流学习
本来想直接利用韦东山老师的虚拟机,但是想想还是自己装一个,体验体验。本人使用的VM虚拟机,系统 ubuntu 9.10,(参照韦老师的视频)
硬件:mini2440
系统:ubuntu 9.10
交叉编译器和linux内核就采用韦东山老师推荐用的:arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2 linux-2.6.22.6.tar.bz2(为了和视频保持一致,便于学习)
1.首先自己下载vm虚拟机,然后在下载ubuntu镜像。
2虚拟机的安装百度一下就会有教程,对于ubuntu安装也是一样的,就不在赘述。
说明:安装ubuntu的时候,尽量把软件安装全,不然到时用其中的一些功能时,没有的话影响后面的开发.尤其是对刚开始学嵌入式,然后安装开发环境时,还出现问题,就比较蛋疼。
韦老师推荐终端工具 SecureCRT 5.2 和 CuteFTP 9,其界面比较友好,所以自己就下了这两个工具。
下面就是今天的正题:
一.首先安装交叉编译工具链
1)通过CuteFTP 9将arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2放到linux服务器上,就是ubuntu,在其下建立work目录。
2)解压arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2,命令为tar xjf arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2。
3)将其路径加入环境变量vi /etc/profile 下
if [ "$EUID" = "0" ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
pathmunge /opt/work/gcc-3.4.5-glibc-2.3.6/bin
4)加入 /work/gcc-3.4.5-glibc-2.3.6/bin ,然后是环境变量生效 service /etc/profile start 输入arm-linux-gcc -v 就可以看到版本号了
二.然后进行u-boot的编译,我直接用的是韦老师的u-boot(因为韦老师的u-boot基本上通吃所有2440)
1) 解压 tar xjf u-boot-1.1.6.tar.bz2
2) 进入 cd u-boot-1.1.6
3) 给u-boot 打补丁 patch -p1 < ../u-boot-1.1.6_jz2440.patch
4) make 100ask24x0_config
5) 编译 make 就会生成U-boot.bin文件,因为本身mini2440的norflash有其自带的u-boot,所以我将自己编译的u-boot烧入nand flash
三. 修改编辑并编译你的内核 (我直接用韦老师光盘中的linux版本,为了和其保持一致便于学习)
1) 解压 tar xjf linux-2.6.22.6.tar.bz2
2) 进入 cd linux-2.6.22.6
3) 打补丁 patch -p1 < ../linux-2.6.22.6_jz2440.patch
4) 把韦老师网盘上下载的mini2440源码\drivers_and_test\10th_lcd\4th\lcd.c复制到内核driver/video,并修改driver/video/Makefile
obj-$(CONFIG_FB_S3C2410) += lcd.o
5) 把 mini2440源码\drivers_and_test\DM9000 网卡驱动复制到内核对应net目录,由于对应Makefile已经修改过了,所以就不需要重新修改,直接使用就行
6) 内核根目录的配置 cp config_ok .config(一定不能忘记这点!)
7) make uImage最后在arch/arm/生成uImage 通过 CuteFTP 9考到windows这边进行烧写
四.烧写uboot
烧写方法有2种:
a)就是用mini2440norflash自带的u-boot,然后通过dnw进行烧写
b)用opengtig 进行烧写
因为没买openjtg所以就用第一种方法烧写成功后,重启开发板(nand启动),按住空格,就会看到菜单,其中就有烧写linux内核和根文件系统的命令。
五.烧写内核
a)使用的是u-boot的菜单命令加dnw进行下载烧写
b)用opengtig 进行烧写
六.烧写文件系统
我选用韦老师网盘中的文件系统fs_mini_mdev.yaffs2文件,使用的是u-boot的菜单命令加dnw进行下载烧写
七.设置nfs网络文件启动,因为服务器的硬盘大,等到以后进行开发,你就体会到网络文件的好处了
1) 首先要在PC的linux上新建一个共享文件夹 root_nfs,然后设置这个共享文件的属性,然后将从韦东山的网盘后下载的文件系统fs_mini_mdev解压到此目录,即可。
vi /etc/exports 如果第一次打开应该是空文件夹 填写内容:/work/nfs_root *(rw,sync,no_root_nfs)
/work/nfs_root表示 nfs 共享目录,它可以作为开发板的根文件系统通过nfs挂载,载设置u-boot的启动参数,就可以以网络文件系统挂载了。所以路径要修改成是你要挂载的文件夹
解释:/work/nfs_root *(rw,sync,no_root_nfs) 的意思其中:* 表示所有的客户机都可以挂载此目录 ,rw表示挂接此目录的客户机对该目录有读写的权力 ,root_nfs
表示允许挂接此目录的客户机享有该主机的 root 身份
通过命令启动和停止 nfs 服务 在PC上的linux输入 /etc/init.d/nfs start 是打开linux的nfs系统服务
2)在开发板的 SecureCRT 界面挂载你的共享目录 mount -t nfs -o nolock,vers=2 192.168.1.108(这是PC上linux的IP地址):/work/nfs_root /mnt
3)cd /mnt 看看能不能打开,你可以测试在PC的共享目录下新建一个vi hello.c 就会在板子上的/mnt中出现
4)启动开发板,进入u-boot,按q,设置参数如
set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.108:/work/nfs_root/fs_mini_mdev ip=192.168.1.17:192.168.1.108:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
这是输入boot重新启动开发板,此时就会以nfs网络文件启动开发板,接下来就是你的嵌入式开发之路了,哈哈哈哈哈哈哈哈哈。
注意!:
1.我刚开始挂接时出现了失败,原来是防火墙没关,这个要特别注意,许多人就是因为这,一直挂接不上。关闭命令 sudo ufw disable,如果你想永远关闭的话,可以写个脚本,进行启动设置即可。
2.还有就是网关,开发板,pc机,虚拟机,IP地址一定要处于用一网关,PC机最好不要自动获取IP自己设置最好,例如:PC机IP 192.168.1.111 虚拟机IP为192.168.1.110,开发板IP192.168.1.17这样就可以
最后,希望各位为大神,批评指正,欢迎交流学习
谢谢小编的分享, 我最近也开始学习了,一起坚持吧
学习学习,谢谢分享!