arm嵌入式linux开发环境搭建

2019-07-12 20:25发布

一, 准备工作 1, 在ubuntu里安装并配置好tftp服务、nfs服务,注意重启服务,并用ps –aux查询确认服务运行。
$sudo /etc/init.d/openbsd-inetd restart $sudo /etc/init.d/xinetd restart $sudo /etc/init.d/portmap restart $sudo /etc/init.d/nfs-kernel-server restart

2, 把kernel镜像uImage放到tftp的服务目录比如tftpboot里,递归修改tftpboot的权限 $sudo chmod 777 /tftpboot -R 同样把文件系统filesystem拷贝到/opt/并递归修改权限777。
 3,安装win开发板的usb转串口的驱动。 开发板上有PL2303芯片,是一个usb-com芯片,所以需要装驱动。装上驱动后连上开发板,提示找到pl2303串口,在设备管理器里面找到PL2303设备对应的串口号。   二, 设置uboot参数 设置开发板上已经烧好的uboot的参数
uboot烧在nandflash里。打开putty工具,选择serial连接类型,串口对应为设备管理器里面PL2303设备的串口号,波特率改为115200。开发板加电后,自动进进入uboot,出现启动菜单,按空格以便进入菜单选择。按q后进入命令提示符,然后按以下格式设置。
setenv serverip 192.168.7.195 //设置tftp服务端的ip地址, ubuntu中IP用ifconfig可以获取 setenv ipaddr 192.168.7.245 //为开发板设置ip地址 setenv gatewayip 192.168.7.1 //设置网关 setenv ethaddr 08:00:3e:26:0a:45 //设置MAC地址 setenv bootcmd tftp 30800000 uImage ; bootm //设置倒计时后的第一条命令,就是uboot的启动菜单的默认项。 setenv bootargs console=ttySAC0,115200 init=/linuxrc root=/dev/nfs nfsroot=192.168.7.195:/opt/filesystem ip=192.168.7.245:192.168.7.195:192.168.7.1:255.255.255.0:farsight_45:eth0:off //与前面的IP和mac设置一致 saveenv //保存设置uboot传给内核的参数
三, 下载kernel和filesystem 确保网络连接没问题。最好是上位机和目标板的网线通过hub或交换机连在一起。如果上位机和目标板通过网线直连,需采用交叉线(是否可行取决于目标版的uboot是否较好的驱动了目标板的网卡)。如果以上步骤都没有问题,那么目标版的uboot启动后会自动通过tftp服务和nfs服务下载kernel和filesystem。     四, 安装交叉编译环境 笔记: 1,下载arm-linux-4.4.3.tar.bz2,解压到/opt/,交叉工具链可执行文件arm-linux-gcc存放的绝对路径目录为/opt/arm-linux-4.4.3/bin/arm-linux-gcc。 2,修改环境变量PATH的值
$sudo vim ~/.bashrc 在最后一行中添加:
export PATH=$PATH:/opt/arm-linux-4.4.3/bin保存退出。     五, 交叉编译举例 笔记: 使用交叉工具链编译c代码 比如编写hello.c
$sudo vim ~/hello.c hello.c内容如下   #include int main(void) { printf(“hello,world! ”); return 0; }
编译成arm可执行文件 arm-linux-gcc hello.c -o hello 在/opt/filesystem中新建一个文件夹,专门用来存放交叉编译后的可执行代码   $sudo cd /opt/filesystem $sudo mkdir bin_arm
将我们之前编译好的hello拷贝到/opt/filesystem/bin_arm中,需要重启重新下载一次才能同步到目标板上? 在目标板的终端中,即putty(串口)中,运行hello。
讨论: 目标板烧入uboot后。 kernel和filesystem没有烧到nandflash里,只是下到sdram里了,每次断电就没了,nandflash里面只有uboot。这样做是为了方便,不用频繁烧写nandflash。 目标版把上位机的filesystem当成自己的根目录。   setenv bootcmd tftp 30800000 uImage ; bootm        //设置倒计时后的第一条命令 倒计时的第一条命令bootm是把kernel下载到sdram的30800000起始地址里。