嵌入式linux系统开发的具体步骤?

嵌入式linux系统开发的具体步骤?,第1张

第一步、建立交叉编译环境

没有交叉开发经验的读者,可能一时很难接受这个概念。首先,要明白两个概念:一般

我们工作的机器,称为开发机、主机;我们制作好的系统将要放到某台机器,如手机或另一

台PC机,这台机我们称为目标主机。

我们一般开发机上已经有一套开发工具,我们称之为原生开发套件,我们一般就是用它

们来写程序,那么,那什么又是交叉编译环境呢?其实一点也不神秘,也就是在开发机上再

安装一套开发工具,这套开发工具编译出来的程序,如内核、系统工作或者我们自己的程序,

是放在目标主机上运行的。

那么或许有初学者会问,直接用原生开发工具为目标主机编译程序不就完了?至少我当

初是这么想的。一般来说,我们的开发机都是X86

平台,原生开发套件开发的工具,也针

对X86

平台,而我们的目标主机可能是PowerPC、IXP、MIPS……所以,我们的交叉编译

环境是针对某一类具体平台的。

一般来讲,交叉开发环境需要二进制工具程序、编译器、C链接库,嵌入式开发常用的

这三类软件是:

Binutils

Gcc

uClibc

当然,GNU包含的工具套件不仅于此,你还要以根据实际需要,进行选择

第二步、编译内核

开发工具是针对某一类硬件平台,内核同样也是。这一步,我们需要用第一步中建立的

工具,对内核进行编译,对于有内核编译经验的人来说,这是非常简单的;

第三步、建立根文件系统

也就是建立我们平常看到的bin、dev、proc……这一大堆目录,以及一些必备的文件;

另外,我们还需要为我们的目标系统安装一些常用的工具软件,如ls、ifconfig……当然,

一个办法是找到这些工具的源代码,用第一步建立的交叉编译工具来编译,但是这些软件一

是数量多,二是某些体积较大,不适合嵌入式系统,这一步,我们一般都是用busybox来完

成的,包括系统引导软件init;

最后,我们为系统还需要建立初始化的引导文件,如inittab……

1. 更新到最新的软件包

Open up System ->Administration ->Update Manager

Click on Settings

Open the Updates Tab

Set 'Release upgrade' to 'Never'. That makes the option to upgrade to Karmic go away.

Close the settings dialog box.

Click on 'Check' to check for upgraded packages. It will look for packages that are upgraded from the version that is installed on your box.

Choose to install the upgrades. This will take a while on a freshly installed box.

2. 安装代码编辑工具

sudo apt-get install vim-gtk

3. 安装网络工具

TFTP服务器

1.安装TFTP服务器及客户端(tftp-hpa是客户端,tftpd-hpa是服务器端)

sudo apt-get install tftp-hpa tftpd-hpa

2.配制TFTP服务器,编辑/etc/default/tftpd-hpa,修改后的内容如下:

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/tftpboot"

TFTP_ADDRESS="0.0.0.0:69"

TFTP_OPTIONS="-l -c -s"

3.创建TFTP目录并重启TFTP服务

sudo mkdir /tftpboot

sudo chmod 777 /tftpboot

sudo service tftpd-hpa restart

4.测试

$tftp tftp服务器地址

>get 文件名(取文件)

>put 文件名(发送文件)

>quit (退出)

5.U-boot参数

set bootcmd tftpboot $loadkernaddr image_dir/zImage\bootm loadkernaddr

例子:set bootcmd tftpboot c0008000 192.168.1.10:kernel.img\bootm c0008000

NFS服务器

1. 安装NFS服务器

sudo apt-get install nfs-kernel-server

2. 配制/etc/exports

/rootfs *(rw,sync,no_root_squash)

3. 重启NFS服务

sudo /etc/init.d/portmap restart

sudo /etc/ini.d/nfs-kernel-server restart

4. 显示NFS共享目录

showmount –e

挂载和卸载NFS目录

sudo mount -t nfs NFS服务器地址:/rootfs /mnt

sudo umount /mnt

5. U-boot参数

setenv bootargs "root=/dev/nfs rw nfsroot=$serverip:$rootpath ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off init=/init console=ttySAC2,115200"

例:

setenv bootargs "root=/dev/nfs rw nfsroot=192.168.1.10:/nfsboot/rootfs ip=192.168.1.199:192.168.1.10:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC1,115200"

SAMBA服务器

1:安装SAMBA服务器及客户端

sudo apt-get install samba

sudo apt-get install smbfs

sudo apt-get install system-config-samba

2:修改配制文件

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bck

sudo vim /etc/samba/smb.conf

只留下[global]

3:打开配制工具

sudo system-config-samba

配制samba用户和共享目录

4:重启SAMBA

sudo /etc/init.d/smbd restart

5:windows下 \\samba服务器地址

SSH

sudo apt-get install openssh-server openssh-client

修改主机名

sudo vim /etc/hostname

主要有三个基本东西:

1)交叉编译环境,即支持某一种硬件体系的编译器,如arm-linux-gcc(支持arm硬件体系)

2) *** 作系统,也就是通过交叉编译工具编译后的Linux内核;

3)文件系统


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/9027519.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-24
下一篇 2023-04-24

发表评论

登录后才能评论

评论列表(0条)

保存