第一篇:嵌入式实验环境搭建一般步骤
嵌入式实验环境搭建的一般步骤
1.启动虚拟机
双击Windows桌面WMware Workstation图标; 2.用交叉网线把主机和实验系统连接:
选择Resume this virtual machine,进入Linux界面。在虚拟机中打开一个Linux终端,需要点击:红帽子->终端, 打开一个Linux终端。
⒈)minicom仿真终端设置
在终端下输入minicom –s,选择serial port setup,回车。
按下A键,将对应参数设置为/dev/ttyS0并回车;按下E键,按下I键,将对应参数设置为115200 8N1,回车;按下F键,将对应参数设置为No;然后回车保存参数,选择save setup as df1。最后选择exit。2.)添加串口设备
如果正在运行虚拟机、Linux,这时要添加串口设备,则必须先用power off方式退出虚拟机,然后再次启动虚拟机,点击“VM”,选择“settings”,点击Add按钮选择“Serial Port”点击“Next”按钮,然后在出现的各个对话框中,依次点击“Next”、“Finish”,则在虚拟机中添加了串行端口
选择power on this virtual machine,进入Linux界面。用户名“root”,口令“123456”。在终端窗口[root@localhost~]#输入minicom并打开实验箱之后回车,则minicom仿真终端程序会将目标板输出到终端的信息,显示出来。
在该界面上会出现“Techv_omap35xx login:”输入“root”,点击回车,此窗口会出现“root@Techv_omap35xx:~#”表示目标板终端。3.安装交叉编译器:
a)将交叉编译器拷贝到/usr/local子目录
打开“我的电脑”,找到E:/软件/ arm-2007q3-51-arm-none-linux-gnueabi-i686.tar.bz 将其进行复制,粘贴到主文件夹下的/usr/local下 b)建文件“arm”并查看 [root@localhost~]# cd /usr/local [root@localhost local]# mkdir arm [root@localhost local]# ls –l 在此窗口中会显示/usr/local中的信息。会看到arm和拷贝的文件。
c)解压
[root@localhost local]#tar xvjf arm-2007q3-51-arm-none-linux-gnueabi-i686.tar.bz空格-C/usr/local/arm(回车)d)添加环境变量
[root@localhost local]# echo $PATH 添加环境变量方法:
[root@localhost local]#kwrite /root/.bashrc(回车),在fi下一行添加“export PATH=/usr/local/arm/arm-2007q3/bin:$PATH”,点击保存、退出,回到终端窗口“[root@localhost local]#”。关掉终端窗口“[root@localhost local]#”.重启终端窗口: 点击红帽子->终端, 打开一个Linux终端:[root@localhost local]# echo $PATH(回车),看到改后的路径。
4.主机Linux环境和目标板IP地址设置 主机终端修改IP地址
[root@localhost local]#ifconfig eth0 192.168.1.5(回车)查看
[root@localhost local]# ifconfig(回车)实验箱终端修改IP地址
root@Techv_omap35xx:~#ifconfig eth0 192.168.1.9(回车)查看
root@Techv_omap35xx:~#ifconfig(回车)5网络防火墙的设置 主机linux终端窗口
[root@localhost local]#setup(回车),光标移动找到“防火墙设置”,点击回车,用光标移动键选择“禁用”防火墙,用“TAB”选择“确定”后回车,退出设置.6.连接
在主机linux minicom终端窗口
[root@localhost local]# ping 192.168.1.9(回车),可以用Ctrl+c键去终止ping命令 在实验箱中
root@Techv_omap35xx:~# ping 192.168.1.5(回车),看看实验系统能否和主机连上。可以用Ctrl+c键去终止ping命令 7.配置NFS网络文件系统
a)设置主机Linux允许NFS服务 首先在linux 主机的终端上 [root@localhost local]#setup(回车)
在“系统服务“选项菜单选中 [*]nfs,[ ]iptables,(用空格键切换*和),然后按F12键退出,再选择方向键,退出setup界面 b)主机终端窗口
[root@localhost local]#kwrite /etc/exports(回车),进入令一个界面,删除第一行,输入:(注意中间有空格)
/ *(rw)/home/nfs1 *(rw)然后,保存、退出。
c)新的设置重启NFS方法:
[root@localhost local]#/etc/init.d/nfs restart 终端内输出(有8个确定):
这样就一切OK了!主机linux下的NFS启动起来。d)将主机/home/nfs1目录挂接为目标板/tmp目录 ⑴ 挂接前主机建立/home/nfs1子目录
[root@localhost /]# mkdir /home/nfs1 [root@localhost /]# cd /home/nfs1 用vi建立一个文件,文件名为abc:
[root@localhost nfs1]# vi abc 保存文件并退出,语句ESC ESC :wq!(注意;这里的abc是个空文件)
[root@localhost nfs1]# ls –l ⑵ 在目标板对应终端窗口,执行挂接命令
root@Techv_OMAP35xx:/# mount-o soft,nolock,rsize=1024-v 192.168.1.5
:/home/nfs1 /tmp ⑶ 挂接后目标板/tmp目录列表
root@Techv_OMAP35xx:/# cd /tmp
root@Techv_OMAP35xx:/var/volatile/tmp# ls –l
第二篇:嵌入式Linux开发环境搭建
第一章
Ubuntu 8.10的安装和网络配置
1.安装虚拟机软件Vmware 6.0.2 虚拟机安装版本Vmware 6.0.2的版本
在 winxp操作系统下用鼠标双击VMware-workstation-6.0.2-59824图标,开始安装虚拟机Vmware,如下图所示:
双击VMware-workstation-6.0.2-59824图标,出现vmware的安装界面,所有的选项都采用默认值,用鼠标点【下一步】,然后出现安装进度条,系统开始安装vmware,等待安装完成后,出现如下安装完成界面:
用鼠标点【Finish】,虚拟机安装完成。系统提示重新启动计算机,选择【是】重新启动计算机,电脑重新启动后,虚拟机安装完成。
2.新建虚拟机
打开Vmware虚拟机软件,选【File】->【New】->【Virtual Machine】,弹出新建虚拟机向导对话框,注意以下几个重要的选项,其他都采用默认选项即可。选择操作系统和版本,如下图所示:
选择虚拟机名称和存放的路径,如下图所示:
设置虚拟机硬盘大小为20G ,如下图所示:
点击【完成】按钮,这样我们就新建了一个虚拟机,下面我们设置一下虚拟机的内存,步骤如下:
点击虚拟机Vmware的【VM】->【settings】时菜单,弹出虚拟机设置对话框,设置虚拟机使用的内存为512M或1024M,如下图所示:
点击【OK】按钮,这样我们就新建了一个虚拟机,该虚拟机的硬盘为20G, 内存为512M.接着我们就可以在该虚拟机上安装ubuntu操作系统了。
注: 键盘和鼠标控制权在虚拟机和Windows系统之间的切换是通过组合键【Ctrl】+【Alt】来实现的。安装Linux操作系统ubuntu Ubuntu安装版本 ubuntu 8.10 点击vmware软件工具栏上的【绿色箭头】启动虚拟机,如下图所示:
点击【VM】->【Removable Devices】->【CD_ROM】->【Edit】菜单,弹出CD_ROM设备对话框,如下图所示:
在Connection中选中【Use ISO image】,设置ubuntu软件安装包的路径,如上图所示。然后重新启动虚拟机,开始在虚拟机上安装ubuntu操作系统。重新启动虚拟机后,出现如下ubuntu安装界面:
选择语言版本为【English】,然后按【回车】键,出现如下安装界面:
选择Install Ubuntu,然后【回车】,开始安装Ubuntu,出现ubuntu安装进度界面如下:
在出现的安装向导主要设置一下城市和用户名密码,如下图所示,其余的安装对话框都采用默认值,选择【Forward】即可。设置安装所在城市
当出现安装所在城市对话框时,选择【ShangHai】,通过选择地图上的点选择,如下图所示:
设置系统的用户名和密码
系统安装过程中出现设置用户名和密码对话框时,设置登陆到ubuntu的用户名和密码,如下图所示:
然后点击【Forward】按钮,在出现的最后安装向导对话框中点击【Install】按钮,开始安装ubuntu,ubuntu安装完成后,最后出现安装完成对话框,如下图所示:
点击【Restart now】开始重新启动ubuntu系统。在系统重启过程中出现如下界面:
提示移走光驱中的磁盘后按回车键,这时我们点击【VM】->【Removable Devices】->【CD_ROM】->【Edit】菜单,弹出CD_ROM设备对话框,如下图所示:
在Connection中选中【Use physical drive】,点【OK】按钮,然后按【回车】即可,系统正常启动,在出现输入用户名和密码提示框时,输入刚才在安装过程中设置的用户名和密码即可。这样就进入了我们刚安装好的ubuntu操作系统。
3.安装Vmware tools工具软件
Vmware tools工具软件用于在window系统和虚拟机的ubuntu系统之间进行数据传递,安装好Vmware tools之后,鼠标可以在window系统和虚拟机之间平滑切换,在window系统和虚拟机之间可以直接通过【复制】和【粘贴】的方式进行数据交换。Vmware tools的安装步骤如下: 1)设置Vmware tool软件的路径为 C:Program FilesVMwareVMware Workstationlinux.iso.点击【VM】->【Removable Devices】->【CD_ROM】->【Edit】菜单,弹出CD_ROM设备对话框,如下图所示:
点击【OK】确定,这时在ubuntu的桌面上出现一个光驱图标,如下图所示:
双击Vmware Tools图标,打开光盘文件夹,可以看到在该光盘目录下看到VmwareTools-6.0.2-59824.tar.gz文件,如下图所示:
返回系统桌面,在点击系统菜单【Places】->【Home Folder】,进入用户目录cao,在用户目录下建立Soft目录,把VmwareTools-6.0.2-59824.tar.gz复制到Soft目录下。
在安装VmwareTools-之前我们要先解锁root用户,点击桌面系统菜单 【System】->【Administration】->【Users and Groups】,弹出用户设置对话框如下:
选中root用户,然后点击下面的 【Unlock】,在点【Close】按钮关闭对话框。接着开始设置root用户密码,点击桌面系统菜单 【Applications】->【Accessories】->【Terminal】,进入用户字符终端操作界面如下图所示:
按照上图所示输入命令sudo passwd root设置root用户密码; 提示password for cao时,输入 cao 用户密码;
提示 Enter new UNIX password时,输入root用户密码;
提示 Retype new UNIX password时,再次输入root用户密码; 最后显示password更新成功。
最后输入命令 su切换到root用户,在提示Password时,输入我们刚才设置的root用户密码即可,然后我们可以看到我们成功切换到root用户了,命令提示符由以cao开头改为以root开头了,表示我们已经成功切换到了root用户。
安装Vmware Tools工具 打开ubuntu 字符操作终端,进入到Soft目录,解压VmwareTools-6.0.2-59824.tar.gz软件包,解压完成后,我们看到在Soft目录下生成了一个新的文件夹vmware-tools-distrib,如下图所示:
执行su命令切换到root用户,执行cd vmware-tools-distrib命令进入到vmware-tools-distrib目录,执行ls命令查看该文件夹下的文件,我们可以看到vmware-tools-distrib文件夹下有一个vmware-install.pl安装脚本文件,在操作终端下通过输入命令./ vmware-install.pl执行该脚本文件安装vmware-tools 即可。如下图所示:
然后开始安装vmware Tools工具,安装过程中出现一些选项全部采用默认值,一直按【回车】即可,最后操作终端输出如下提示安装成功信息,如下图所示:
Vmware Tools安装成功后,我们就可以在Windows和虚拟机的ubuntu之间直接通过【复制】和【粘贴】命令进行数据交换了。
网络配置
Ubuntu的虚拟机安装模式下的网络配置
虚拟机下安装好ubuntu之后,在【system】下点【Network Configuration】,弹出Network Connections对话框:
选取Wired选项卡,选中eth0, 点 Edit 按钮,弹出如下网络接口eth0编辑对话框:
注:如果此处没有显示eth0网络,则在windows 下手工配置网络接口的IP地址,然后再重新启动虚拟机,再进入上述网络配置对话框,一般都会出现eth0网络。
在网络接口eth0编辑对话框配置eth0的IP address 为 192.168.0.220 ,Netmask为255.255.255.0,Gateway 为 192.168.0.1, DNS为 218.2.135.1,配置完成后,点OK即可。IP地址,网络掩码,网关的具体配置值需要根据实际网络环境配置。
注:如果这样配置不能上网,可以尝试通过DHCP方式获取IP地址,DNS还是手动设置。
配置完成后,重新Enable Networking即可,如下图所示:
这样就完成了Ubuntu的网络配置,配置完成后,就可以在ubuntu里面打开浏览器上网了。
设置软件源服务器
在全球很多国家都设置有为ubuntu系统服务的服务器,上面有很多为ubuntu提供的应用软件,我们通过设置软件源服务器,来实现在线通过网络完成软件的安装,即通过一条命令实现软件的搜索,下载和安装,同时会安装该软件需要的依赖文件,同过在网络来安装ubuntu上的应用软件非常方便。Ubuntu软件源服务器的设置步骤如下:
1)在桌面系统菜单上点击【System】->【Administration】->【Software Source】,弹出软件源设置对话框如下:
在Download from 里选择软件源服务器,我们一般选择 Taiwan的倒数第1或第2个服务器,如上图所示,选择好软件源服务器后,点【Close】按钮,弹出如下对话框提示可获得的软件包信息已经过时,需要重新更新。
点击【Reload】按钮更新可获得的软件包信息。更新完成后,我们就完成了ubuntu软件源服务器的设置。
安装libncurses5-dev软件包 在ubuntu环境下,我们用命令make menuconfig来对内核进行裁剪和配置时,需要用终端模式下的字符菜单支持软件包libncurses5-dev,下面我们就通过网络的方式来安装libncurses5-dev软件包,安装的前提是已经设置了软件源和ubuntu系统的网络工作正常。安装libncurses5-dev非常简单,在终端模式下输入:apt-get install libncurses5-dev即可。如下图所示:
这样,libncurses5-dev就安装好了,我们可以在终端模式下通过make menuconfig命令来配置和裁剪linux内核了。
安装交叉编译器arm-linux-gcc 嵌入式开发的应用程序编译好后不是在PC机上运行,而是在我们的ARM开发板上运行,这时需要用arm-linux-gcc 交叉编译器编译。安装交叉编译器非常简单,步骤如下:
1)拷贝arm-linux-gcc交叉编译器软件包arm-linux-gcc-4.3.2.tgz到/home/cao/Soft目录。2)进入到Soft目录,在该目录下执行tar zxvf arm-linux-gcc-4.3.2.tgz –C / 命令 解压arm-linux-gcc-4.3.2.tgz。如下图所示:
注: C是大写,C后面有个空格
该命令执行后,将把arm-linux-gcc 安装到 /usr/local/arm/4.3.2 目录。arm-linux-gcc编译器安装好后,我们还要把交叉编译器arm-linux-gcc的路径加入到系统的PATH环境变量,这样在操作终端的其他任意目录下都可以使用arm-linux-gcc。设置环境变量的步骤如下: 1)在终端界面下输入 gedit /root/.bashrc ,编辑./bashrc 文件,如下图所示:
2)在.bashrc文件中增加如下命令把交叉编译器的路径增加到环境变量PATH中, export PATH=$PATH:/usr/local/arm/4.3.2/bin,然后保存推出,如下图所示:
重新打开终端,通过su命令切换到root用户,输入arm-linux-gcc –v就可以看到我们安装的交叉编译器arm-linux-gcc的版本信息了。如下图所示:
我们可以看到我们的安装的gcc版本为4.3.2,到这里,我们的交叉编译器环境arm-linux-gcc就安装好了。
第三篇:linux嵌入式开发板搭建开发环境经验总结
一、环境
服务器端:PC机(win7),Ubuntu10.04操作系统,Vmware8.0.4 客户机端 :ARM11开发板(6410)一根交叉网线
二、Ping通电脑和开发板
用一根交叉网线连接电脑和开发板,给开发板上电,一定要是交叉网线,普通网线不行,一般买开发板时会送一根交叉网线。在开发板输入ifconfig,查看开发板的ip地址,我的ip为192.168.0.232
设置本地连接和虚拟机ip为同一网段
在虚拟机上输入ping 192.168.0.118,在win7下的cmd输入ping192.168.0.232,验证是否能ping通
如果ping不通,先把防火墙关闭,再把网络设置为家庭网络。Ping通后进行下一步
三、Ping通虚拟机和开发板
开发虚拟机,我用的是vmware8.0.2,ubuntu10.0.4 在控制面板里面桥接vmnet1和本地连接,右击网桥,设置ip,设置方法和本地连接一样,并把ipv6前面的勾去掉。
完成后设置Vmware,右击自己的虚拟机,点击settings
设置Network Adapter选项,选择custom:Specific virtual network的CMNET1(H Ost-only)
修改虚拟机的ip地址,在network connections里编辑 Auto Ethernet这个网络
把ip设置成和网桥一样。点击apply
不出意外,现在应该虚拟机和开发板能相互ping通了,现在离成功又进了一步。
四、安装nfs服务器程序
用以下命令安装nfs服务器程序软件包,在命令执行过程中,默认启动SUNRPC服务和nfs服务,并创建/etc/exports和、etc /default/nfs-kernel-server配置文件,等待用户完成nfs安装后,配置将要共享的资源。
可以使用netstat命令检查nfs端口是否已经打开:
以上截图可看出,nfs和SUNRPC端口已处于监听状态,不过,客户端此时还无法访问到nfs服务器,还需对nfs服务器进行配置,将共享资源授权给特定用户之后,客户端才能成功访问。
五、启动和停止nfs服务
虽然完成nfs安装后会自动启动nfs,但要调整共享资源还得重新启动nfs服务,以使配置生效。
1、命令方式手动启动和停止nfs服务
启动nfs服务:
停止nfs服务:
重启nfs服务:
查看nfs服务当前状态,若nfs服务正在运行则返回“nfsd running”。否则返回“nfsd not running”。
2、使用图形工具启动和停止nfs服务(此项好像在10.04中没有?)在Ubuntu中同样可以使用services-admin图形界面工具管理nfs服务。若想随机启动时启动nfs服务,可以点击【系统】|【系统 管理】|【服务】命令,打开【服务设置】对话框,勾选【文件夹共享服务(nfs-kernel-server)】选项,单击【关闭】按钮完成设置。
六、nfs服务器配置
nfs服务是根据一个―名单‖为用户开放共享资源的。
1、nfs服务配置文件
在Ubuntu Linux系统中,/etc/exports是nfs服务器的全局配置文件。配置文件中一行即为一条配置项,用于指明网络中―哪些客户端‖共享―哪些目录资源‖。导出资源配置项格式如下:.......其中,表示服务器中导出的共享资源路径,注意:必须是绝对路径名; 表示客户端主机标识,可以用主机名、组、通配符、网段方式指定,如果是多个主机标识,需要使用空格隔开; 表示赋予每个客户端主机的访问权限。
把需要导出的目录全部放在/etc/exports文件是一个良好的习惯,这可以对nfs的管理更明确和清晰。尽量将声明的详细具体,从而阻止不速之客进入nfs服务系统。
2、使用图形工具配置nfs服务(Ubuntu10.04中好像没找着)配置nfs服务器除了可以使用文本编辑工具直接修改/etc/exports文件,然后重新启动nfs服务,完成整个配置任务外。还可以采用Ubuntu Linux系统提供的nfs服务图形配置工具——shares-admin进行快速、便捷的配置。
步骤:单击【系统】|【系统管理】|【共享的文件夹】命令,打开【共享的文件夹】对话框。选择【添加】按钮打开【Share Folder】对话框进行设置,有很多种配置方式。配置完后你会发现。/etc/exports配置文件的内容是完全跟图形界面下的配置对应的。如果只修改了/etc/exports文件,并不总是要重启nfs服务。可以使用exportfs工具重新读取/etc/exports,就可以加载输出的目录。exportfs工具语法如下:
exportfs [-aruv]-a : 全部挂载(或卸载)/etc/exports的设置。
-r : 重新挂载/etc/exports的设置,更新/etc/exports和/var/lib/nfs/xtab里面的内容。-u : 卸载某一个目录。
-v : 在输出的时候,把共享目录显示出来。
在nfs已经启动的情况下,如果又修改了/etc/exports文件,可以执行命令: $ exportfs-ra 系统日志文件/var/lib/nfs/xtab中可以查看共享目录访问权限,不过只有已经被挂载的目录才会出现在日志文件中。
七、连接nfs服务器
通过上面的配置后,客户机便可通过简单的mount命令将nfs共享资源挂载到本地来了,之后可以如同操作本地文件系统一样使用。
1、查看nfs服务器的共享资源
在客户机连接nfs共享资源前,通常要用showmount命令查看一下nfs服务器上的共享资源情况,了解是否有权限访问。showmount命令查看 某台nfs服务器上都有哪些nfs共享资源。showmount命令包含在nfs-kernel-server软件包中,一般语法格式 是:showmount [dehv] nfssrvname 其中nfssrvname表示nfs服务器主机名,也可用IP地址各选项如下:-d :显示客户端所挂载的共享目录-e: 显示nfs服务的导出共享目录列表-h: 显示帮助信息-v: 显示版本
单独使用showmount命令,将显示本地主机/etc/exports配置文件中的共享配置项。
2、挂载共享资源
可以通过mount命令在客户机端挂载nfs服务器端的共享资源。mount命令的一般语法格式是:
mount nfssrvname:/Share-Directory /mnt-Point 其中,nfssrvname表示nfs服务器主机名,也可用IP地址;Share-Directory表示nfs服务器导出的共享资源目录,必须用 绝对路径,与nfssrvname用“:”号隔开;mnt-Point表示共享资源将挂载到客户端主机上的位置,在挂载前一定要确保挂载目录已经存在。
如果nfs服务器上没有给予授权,客户端仍强行挂载某些共享目录,则会被拒绝,执行失败。
3、卸载共享资源
在使用完nfs服务器共享资源后,建议即刻卸载nfs文件系统。卸载命令umount一般语法格式是:
umount /mnt-Point 其中mnt-Point表示共享资源在客户端的挂载点。
注意:当有用户在使用某个已加装的共享目录上的文件时(在挂载点下要退出才能卸载),则不能卸载在文件系统。如果用户确认无误,可使用“umount-f”命令强行卸载共享的目录。
4、测试是否成功,自己挂自己
在folinux文件夹中看到挂载过来的share文件夹中的good文件
如果失败输入exportfs –rv
如果再失败应该是防火墙的问题,输入sudo ufw disable关闭防火墙,进行到这里不出意外应该可以挂载成功了。
在开发板上输入
[root@FORLINX6410]# mount 192.168.0.118:/mnt/share /mnt会出现下面的提示: svc: failed to register lockdv1 RPC service(errno 111).mount: mounting 192.168.0.118:/mnt/share on /mnt failed: Connection refused 正确应该输入
[root@FORLINX6410]# mount-t nfs-o nolock 192.168.0.118:/mnt/share /mnt 大功告成,这时你虚拟机上的/mnt/share被挂载到了开发板的/mnt上。
第四篇:嵌入式linux学习步骤
嵌入式linux学习步骤
作者:phantom 时间:2009-8-6 文章来源:来自网络
1、Linux 基础
安装Linux操作系统 Linux文件系统 Linux常用命令 Linux启动过程详解 熟悉Linux服务能够独立安装Linux操作系统 能够熟练使用Linux系统的基本命令 认识Linux系统的常用服务安装Linux操作系统 Linux基本命令实践 设置Linux环境变量 定制Linux的服务 Shell 编程基础使用vi编辑文件 使用Emacs编辑文件 使用其他编辑器
2、Shell 编程基础
Shell简介 认识后台程序Bash编程熟悉Linux系统下的编辑环境 熟悉Linux下的各种Shell 熟练进行shell编程熟悉vi基本操作 熟悉Emacs的基本操作 比较不同shell的区别 编写一个测试服务器是否连通的shell脚本程序 编写一个查看进程是否存在的shell脚本程序 编写一个带有循环语句的shell脚本程序
3、Linux 下的 C 编程基础
linux C语言环境概述 Gcc使用方法 Gdb调试技术 Autoconf Automake Makefile 代码优化 熟悉Linux系统下的开发环境 熟悉Gcc编译器 熟悉Makefile规则编写Hello,World程序 使用 make命令编译程序 编写带有一个循环的程序 调试一个有问题的程序
4、嵌入式系统开发基础
嵌入式系统概述 交叉编译 配置TFTP服务 配置NFS服务 下载Bootloader和内核 嵌入式Linux应用软件开发流程熟悉嵌入式系统概念以及开发流程 建立嵌入式系统开发环境制作cross_gcc工具链 编译并下载U-boot 编译并下载Linux内核 编译并下载Linux应用程序
4、嵌入式系统移植
Linux内核代码平台相关代码分析 ARM平台介绍平台移植的关键技术 移植Linux内核到 ARM平台 了解移植的概念 能够移植Linux内核移植Linux2.6内核到 ARM9开发板
5、嵌入式 Linux 下串口通信
串行I/O的基本概念 嵌入式Linux应用软件开发流程 Linux系统的文件和设备 与文件相关的系统调用 配
置超级终端和MiniCOM 能够熟悉进行串口通信 熟悉文件I/O 编写串口通信程序 编写多串口通信程序
6、嵌入式系统中多进程程序设计
Linux系统进程概述 嵌入式系统的进程特点 进程操作 守护进程 相关的系统调用了解Linux系统中进程的概念 能够编写多进程程序编写多进程程序 编写一个守护进程程序 sleep系统调用任务管理、同步与通信 Linux任务概述任务调度 管道 信号 共享内存 任务管理 API 了解Linux系统任务管理机制 熟悉进程间通信的几种方式 熟悉嵌入式Linux中的任务间同步与通信编写一个简单的管道程序实现文件传输 编写一个使用共享内存的程序
7、嵌入式系统中多线程程序设计
线程的基础知识 多线程编程方法 线程应用中的同步问题了解线程的概念 能够编写简单的多线程程序编写一个多线程程序
8、嵌入式 Linux 网络编程
网络基础知识 嵌入式Linux中TCP/IP网络结构 socket 编程 常用 API函数 分析Ping命令的实现 基本UDP套接口编程 许可证管理 PPP协议 GPRS 了解嵌入式Linux网络体系结构 能够进行嵌入式Linux环境下的socket 编程 熟悉UDP协议、PPP协议 熟悉GPRS 使用socket 编写代理服务器 使用socket 编写路由器 编写许可证服务器 指出TCP和UDP的优缺点 编写一个web服务器 编写一个运行在 ARM平台的网络播放器
9、GUI 程序开发
GUI基础 嵌入式系统GUI类型 编译QT 进行QT开发熟悉嵌入式系统常用的GUI 能够进行QT编程使用QT编写“Hello,World”程序 调试一个加入信号/槽的实例 通过重载QWidget 类方法处理事件
10、Linux 字符设备驱动程序
设备驱动程序基础知识 Linux系统的模块 字符设备驱动分析 fs_operation结构 加载驱动程序了解设备驱动程序的概念 了解Linux字符设备驱动程序结构 能够编写字符设备驱动程序编写Skull驱动 编写键盘驱动 编写I/O驱动 分析一个看门狗驱动程序 对比Linux2.6内核与2.4内核中字符设备驱动的不同Linux 块设备驱动程序块设备驱动程序工作原理 典型的块设备驱动程序分析 块设备的读写请求队列了解Linux块设备驱动程序结构 能够编写简单的块设备驱动程序比较字符设备与块设备的异同 编写MMC卡驱动程序 分析一个文件系统 对比Linux2.6内核与2.4内核中块设备驱动的不同
11、文件系统
虚拟文件系统 文件系统的建立 ramfs内存文件系统 proc文件系统 devfs 文件系统 MTD技术简介 MTD块设备初始化 MTD块设备的读写操作了解Linux系统的文件系统 了解嵌入式Linux的文件系统 了解MTD技术 能够编写简单的文件系统为 ARM9开发板添加 MTD支持 移植JFFS2文件系统 通过proc文件系统修改操作系统参数 分析romfs 文件系统源代码 创建一个cramfs 文件系统
第五篇:学习嵌入式ARM+Linux_步骤
学习嵌入式ARM+Linux 步骤
转载的,写的非常有指导性,大概步骤就是:
ARM裸机编程—熟悉Linux系统—了解Linux完整运行过程—内核移植—驱动开发—应用程序开发
---------------
由于很多人总问这个问题,所以这里做一个总结文档供大家参考。这里必须先说明,以下的步骤都是针对Linux系统的,并不面向WinCE。也许你会注意 到,现在做嵌入式的人中,做linux研究的人远比做WinCE的人多,很多产家提供的资料也是以linux为主。我一直很难理解,其实WinCE的界面 比linux的界面好看多了,使用起来也很方便,更为重要的是,WinCE的开发和Windows下的开发基本一样,学起来简单得多,但是学linux或 者使用linux做嵌入式的人就是远比WinCE多。在和很多工作的人交流时我了解到,他们公司从没考虑使用WinCE,因为成本高,都是使用linux 进行开发。我读研究生的的实验室中也没有使用WinCE的,大都研究linux,也有少部分项目使用vxwork,但是就没有听说过使用WinCE的,原 因就是开源!当然现在WinCE6.0听说也开源,不过在成本和资源上linux已经有了无人能挡的优势。与此相对应的是,越来越多的电子厂商已经开始使 用linux开发产品。举个例子,Google近期开发的智能手机操作系统Android其实就是使用linux-2.6.23内核进行改进得到的。
第一,学习基本的裸机编程。
对于学硬件的人而言,必须先对硬件的基本使用方法有感性的认识,更必须深刻认识该硬件的控制方式,如果一开始就学linux系统、学移植那么只会马上就陷 入一个很深的漩涡。我在刚刚开始学ARM的时候是选择ARM7(主意是当时ARM9还很贵),学ARM7的时候还是保持着学51单片机的思维,使用ADS 去编程,第一个实验就是控制led。学过一段时间ARM的人都会笑这样很笨,实际上也不是,我倒是觉得有这个过程会好很多,因为无论做多复杂的系统最终都 会落实到这些最底层的硬件控制,因此对这些硬件的控制有了感性的认识就好很多了
学习裸机的编程的同时要好好理解这个硬件的构架、控制原理,这些我称他为理解硬件。所谓的理解硬件就是说,理解这个硬件是怎么组织这么多资源的,这些资源 又是怎么由cpu、由编程进行控制的。比如说,s3c2410中有AD转换器,有GPIO(通用IO口),还有nandflash控制器,这些东西都有一 些寄存器来控制,这些寄存器都有一个地址,那么这些地址是什么意思?又怎么通过寄存器来控制这些外围设备的运转?还有,norflash内部的每一个单元 在这个芯片的内存中都有一个相应的地址单元,那么这些地址与刚刚说的寄存器地址又有什么关系?他们是一样的吗?而与norflash相对应的 nandflash内部的储存单元并不是线性排放的,那么s3c2410怎么将nandflash的地址映射在内存空间上进行使用?或者简单地说应该怎么 用nandflash?再有,使用ADS进对ARM9行编程时都需要使用到一个初始化的汇编文件,这个文件究竟有什么用?他里面的代码是什么意思?不要这 个可以吗?
诸如此类都是对硬件的理解,理解了这些东西就对硬件有很深的理解了,这对以后更深一步的学习将有很大的帮助,如果跳过这一步,我相信越往后学越会觉得迷茫,越觉得这写东西深不可测。因为,你的根基没打好。
不过先声明一下,本人并没有使用ADS对ARM9进行编程,我是学完ARM7后直接就使用ARM9学linux系统的,因此涉及使用ADS对ARM9进行编程的问题我很难回答^_^,自己去研究研究吧。
对于这部分不久将提供一份教程,这个教程中的例程并不是我为我们所代理的板子写的,是我在我们学院实验室拿的,英培特为他们自己的实验箱写的,不过很有借鉴意义,可以作为
一份有价值的参考。
第二,使用linux系统进行一些基本的实验。
在买一套板子的时候一般会提供一些linux的试验例程,好好做一段时间这个吧,这个过程也是很有意义的,也是为进一步的学习积累感性认识,你能想象一个 从没有使用过linux系统的人能学好linux的编程吗?好好按照手册上的例程做一做里面的实验,虽然有点娃娃学走路,有点弱智,但是我想很多高手都会 经历这个过程。
在这方面我们深蓝科技目前没有计划提供相应的例程,主要是开发板的提供商会提供很丰富的例程,我们不做重复工作,只提供他们没有的、最有价值的东西给大家。
第三,研究完整的linux系统的的运行过程。
所谓完整的linux系统包括哪些部分呢?
三部分:bootloader、linux kernel(linux内核)、rootfile(根文件系统)。
那么这3部分是怎么相互协作来构成这个系统的呢?各自有什么用呢?三者有什么联系?怎么联系?系统的执行流程又是怎么样的呢?搞清楚这个问题你对整个系统 的运行就很清楚了,对于下一步制作这个linux系统就打下了另一个重要的根基。介绍这方面的资料网上可以挖掘到几吨,自己好好研究吧。
第四,开始做系统移植。
上面说到完整的linux有3部分,而且你也知道了他们之间的关系和作用,那么现在你要做的便是自己动手学会制作这些东西。
当然我不可能叫你编写这些代码,这不实现。事实上这个3者都能在网下载到相应的源代码,但是这个源代码不可能下载编译后就能在你的系统上运行,需要很多的 修改,直到他能运行在你的板子上,这个修改的过程就叫移植。在进行移植的过程中你要学的东西很多,要懂的相关知识也很多,等你完成了这个过程你会发现你已 经算是一个初出茅庐的高手了。在这个过程中如果你很有研究精神的话你必然会想到看源代码。很多书介绍你怎么阅读linux源代码,我不提倡无目的地去看linux源代码,用许三多的话 说,这没有意义。等你在做移植的时候你觉得你必须去看源代码时再去找基本好书看看,这里我推荐一本好书倪继利的《linux内核的分析与编程》,这是一本 针对linux-2.6.11内核的书,说得很深,建议先提高自己的C语言编程水平再去看。
至于每个部分的移植网上也可以找到好多吨的资料,自己研究研究吧,不过要提醒的是,很多介绍自己经验的东西都或多或少有所保留,你按照他说的去做总有一些 问题,但是他不会告诉你怎么解决,这时就要靠自己,如果自己都靠不住就找我一起研究研究吧,我也不能保证能解决你的问题,因为我未必遇到过你的问题,不过 我相信能给你一点建议,也许有助你解决问题。
这一步的最终目的是,从源代码的官方主页上(都是外国的,悲哀)下载标准的源代码包,然后进行修改,最终运行在板子上。
盗用阿基米德的一句话:“给我一根网线,我能将linux搞定”。
第五,研究linux驱动程序的编写。
移植系统并不是最终的目的,最终的目的是开发产品,做项目,这些都要进行驱动程序的开发。
Linux的驱动程序可以说是五花八门,linux2.4和linux2.6的编写有相当大的区别,就是同为linux2.6但是不同版本间的驱动程序也 有区别,因此编写linux的驱动程序变都不是那么容
易的事情,对于最新版本的驱动程序的编写甚至还没有足够的参考资料。那么我的建议就是使用、移植一个 不算很新的版本内核,这样到时学驱动的编程就有足够的资料了。这部分的推荐书籍可以参考另一篇文章《推荐几本学习嵌入式linux的书籍》。
第六,研究应用程序的编写。
做作品做项目除了编写驱动程序,最后还要编写应用程序。现在的趋势是图形应用程序的开发,而图形应用程序中用得最多的还是qt/e函数库。我一直就使用这 个函数库来开发自己的应用程序,不过我希望你能使用国产的MiniGUI函数库。盗用周杰伦的广告词就是“支持国产,支持MiniGUI”。MiniGUI的编程比较相似Windows下的VC编程,比较容易上手,效果应该说是相当不错的,我曾使用过来开发ARM7的程序。不过MiniGUI 最大的不好就是没有像qtopia这样的图形操作平台,这大大限制了他的推广,我曾经幻想过与北京飞漫公司(就是MiniGUI的版权拥有者)合作使用 MiniGUI函数库开发像qtopia这样的图形操作平台,不过由于水平有限这只能是幻想了,呵呵。
完成这一步你基本就学完了嵌入式linux的全部内容了。
还有一个小小的经验想和大家分享。我在学习嵌入式linux的过程中很少问人,客观原因是身边的老师、同学师兄都没有这方面的高手,主观原因是我不喜欢问 人,喜欢自己研究解决问题。这样做有个好处,就是可以提高自己解决问题的能力,因为做这些东西总有很多问题你难以理解,别人也没有这方面的经验,也不是所 有问题都有人给你答案,这时必须要自己解决问题,这样,个人的解决问题能力就显得非常关键了。因此我的建议就是一般的问题到网上搜索一下,确实找不到答案 了就问问高手,还是不行了就自己去研究,不要一味去等别人帮你解决问题。
记住,问题是学习的最好机会。