第十八课 开发板安装准备
一.问题
- 嵌入式系统需要安装在开发板的什么位置?
nand flash
- 需要安装的嵌入式linux系统可以分为几个部分?
- 把嵌入式linux系统安装到nandflash的具体步骤是什么?
二.嵌入式系统
一个正常的嵌入式系统有着如下的组成
- Bootloader:当开发板上电的时候,最先启动的就是它,初始化一些必要的硬件
- Linux内核
- 文件系统(根文件系统):包括应用程序,音频、视频、文本文件。
三.系统安装步骤
- 系统安装辅助软件,dd命令/windows烧写软件------SD卡----USB下载线(嵌入式linux系统)----开发板的nandflash
- 软件部分
dd:进行文件的复制,在复制的同时,可以进行格式转换
例如:dd iflag=dsync oflag=dsync if =xx.bin of=/dev/sdb seek=1
dd 命令名
iflag=dsync 读取文件时,采用同步方式
oflag=dsync 写入文件时,采用同步方式
if =xx.bin 要复制的文件名
of=/dev/sdb 文件被复制到的设备,/dev/sdb表示sd卡,当我们把内存卡插到电脑上的时候,会出现对应的一个文件,这个文件一般就是dev/sdb
seek=1 sd卡的第一个扇区
- 硬件准备1
(1)SD卡不能小于4GB,必须使用读卡器,即使你的PC自带了SD卡槽
(2)必须使用标准的SD卡,不能使用TF卡+套卡。
(3)连接好串口和电源,摆正开发板是SD卡启动。
- 硬件准备2
连接好串口和电源,确保开发板是从SD卡启动(1234对应着:OFF、ON、ON、OFF)。
- 连接
当我们把优盘连接到电脑上后,我们率先要做的是将优盘进行格式化。然后我们在虚拟机中找到这个图标,我们在第六个图上单机右键进行链接选项。之后我们就会在主页面中看到这个大约4G的文件了。
连接之后我们并不知道SD卡在哪里,所以我们使用命令:fdisk -l 进行查看,根据容量的关系我们找到类似的存在 /dev/sdb。
我们在文件夹下输入dd iflag=dsync oflag=dsync if =u-boot_TQ210.bin of=/dev/sdb seek=1 回车,显示完成。右键图标,进行删除优盘。
注意:u-boot_TQ210.bin是我们通过samba服务器导进来的完成的程序文件。
我们连接开发板电源,打开secureCRT软件,按住空格,开启电源,显示下面的界面,显示成功:
注意:设置虚拟机选项要在虚拟机启动之前完成,这里为了使得在主界面的下面有相应的usb插入图标,我们要在启动虚拟机之前设置USB驱动设备,设置了自动显示后,将在图下面显示响应的标识。下图的左数第六个标志就是。
本节课和上一节课看似简单,但是我却在学习过程中遇到了好多的问题。首先就是配套课程中的usb转串口(232)软件是不能用的。我试过从网上下载,用驱动精灵来搜索,但是都是不行的。于是,我直接向相关的厂家要了软件,还别说,真好使。走了一些弯路,也学到了许多。在本节课中,我遇到的问题是,linux系统的usb驱动问题。
延伸:
modprobe(选项)(参数)
选项
-a或--all:载入全部的模块;
-c或--show-conf:显示所有模块的设置信息;
-d或--debug:使用排错模式;
-l或--list:显示可用的模块;
-r或--remove:模块闲置不用时,即自动卸载模块;
-t或--type:指定模块类型;
-v或--verbose:执行时显示详细的信息;
-V或--version:显示版本信息;
-help:显示帮助。
参数
模块名:要加载或移除的模块名称。
实例
查看modules的配置文件:
modprobe -c
这里,可以查看modules的配置文件,比如模块的alias别名是什么等。会打印许多行信息,例如其中的一行会类似如下:
alias symbol:ip_conntrack_unregister_notifier ip_conntrack
列出内核中所有已经或者未挂载的所有模块:
modprobe -l
这里,我们能查看到我们所需要的模块,然后根据我们的需要来挂载;其实modprobe -l读取的模块列表就位于/lib/modules/`uname -r`目录中;其中uname -r是内核的版本,例如输出结果的其中一行是:
/lib/modules/2.6.18-348.6.1.el5/kernel/net/netfilter/xt_statistic.ko
挂载vfat模块:
modprobe vfat
这里,使用格式modprobe 模块名来挂载一个模块。挂载之后,用lsmod可以查看已经挂载的模块。模块名是不能带有后缀的,我们通过modprobe -l所看到的模块,都是带有.ko或.o后缀。
移除已经加载的模块:
modprobe -r 模块名
这里,移除已加载的模块,和rmmod功能相同
linux下无法识别u盘
经常会遇到Linux下无法识别u盘的情况,这里做一下记录:
1.在虚拟机(vbox)中无法识别u盘
vbox和宿主机对u盘的使用时独占的(即在某一时间只有二者之一能访问u盘,而不能同时访问),遇到vbox中的linux无法识别u盘的情况时以下可以参考:
1>保证在宿主机下能对u盘进行访问,这样保证宿主机的u盘驱动没有问题
2>需要在vbox下进行访问时,进入虚拟机中的linux系统,然后在菜单栏 设备->分配usb设备 下找到相应的usb设备并勾选
这时一般来说就可以识别u盘了,如果还是没有成功识别,这说明虚拟机下所装的linux缺失了usb的相关驱动(这种情况来自于绿色版虚拟机,可以补装usb驱动或者使用安装版的虚拟机)。
2.在实际linux系统下无法识别u盘
在实际的linux系统下无法识别u盘时,可以参考以下流程:
1>插入u盘
2>#fdisk -l /dev/sd* 或者 #df
这时如果看到相应的u盘,那么u盘已经被正确识别;如果看不到那么执行接下来的操作。
3>#lsmod
执行上述命令查看 usb-storage scsi_mod sd_mod 模块是否已经被添加,如果没有找到上述模块,执行#modprobe [module] 进行添加。
4>建立挂载点,如/mnt/usb,执行#mount /dev/sda /mnt/usb
有的系统需要指出挂载的文件类型,执行#mount -t vfat /dev/sda /mnt/usb