TI-AM1808_LINUX开发笔记

一.  开发环境

1..windows7 + VMware+Ubuntu14.04.1 LTS

2. ubuntu开发目录:/home/lct

3. 编译工具:arm-linux-gcc4.4.3,所在目录:/usr/local/arm/4.4.3/bin

4. 虚拟机网络设置

本机PC:       ip:192.168.2.104  掩码:255.255.0 网关:192.168.2.1

Linux网络设置:  ip:192.168.2.105 掩码:255.255.0 网关:192.168.2.255

虚拟机连接方式:bridged

 

 

二.  编译U-BOOT

 

1.解压: tar -zvxfu-boot-2010.12-psp03.21.00.04.mcuzone20111109.tar.gz

2. 清除之前配置:

make distcleanCROSS_COMPILE=/usr/local/arm/4.4.3/bin/arm-linux-

3. 生成配置文件.config:

makeda850evm_configCROSS_COMPILE=/usr/local/arm/4.4.3/bin/arm-linux-

4. 编译:make allCROSS_COMPILE=/usr/local/arm/4.4.3/bin/arm-linux-

 

三.编译内核

 

1. u-boot编译后生成的mkimage拷贝到/bin下

2. 清除之前配置:

make distcleanARCH=arm CROSS_COMPILE=/usr/local/arm/4.4.3/bin/arm-linux-

3. 生成配置文件.config:

makeda850_omapl138_deconfig ARCH=arm CROSS_COMPILE=/usr/local/arm/4.4.3/bin/arm-linux-

4.配置:make ARCH=arm CROSS_COMPILE=/usr/local/arm/4.4.3/bin/arm-linux-menuconfig-

5. 编译生成uImage:

make uImageARCH=arm CROSS_COMPILE=/usr/local/arm/4.4.3/bin/arm-lin ux-

 

四.制作文件系统

交叉编译busybox:

1.解压: tar –xvf busybox-1.19.4.tar.bz2

2.配置(动态编译):make menuconfig

3.编译:make ARCH=arm CROSS_COMPILE=/usr/local/arm/4.4.3/bin/arm-linux-

编译时错误:

错误一: loginutils/passwd.c:In function ‘passwd_main’:

loginutils/passwd.c:104:16: error: storage size of ‘rlimit_fsize’isn’t known

loginutils/passwd.c:188:2: warning: implicit declaration offunction ‘setrlimit’ [-Wimplicit-function-declaration]

loginutils/passwd.c:188:12: error: ‘RLIMIT_FSIZE’ undeclared(first use in this function)

loginutils/passwd.c:188:12: note: each undeclared identifier isreported>for each function it appears in

loginutils/passwd.c:104:16: warning: unused variable‘rlimit_fsize’ [-Wunused-variable]

改正:sudo gedit busybox-1.19.4/include/libbb.h添加头文件:#include 

错误二:util-linux/mkfs_ext2.c:51:27: fatal error: linux/ext2_fs.h:No such file or directory

 TI-AM1808_LINUX开发笔记_第1张图片

改正:出现这个错误是busybox版本导致的,只有busybox-1.19.4会出现这个问题,换成busybox-1.21.1,问题消失。

4.安装:make install

5.创建系统其他文件:



6. 拷贝编译工具链的库文件


TI-AM1808_LINUX开发笔记_第2张图片



7. 添加启动文件:etc/inittab是系统进程init的启动脚本



etc/inittab内容:

::sysinit:/etc/init.d/rcS

::askfirst:-/bin/sh

::restart:/sbin/init

::ctrlaltdel:/sbin/reboot

8. 创建fstab文件,并添加内容:这个文件是在kernel启动末尾使用的,有的自定义kernel可能直接把该mount的节点都挂载上了



etc/fstab内容:

#device       mount-point    type     options      dump   fsckorder

proc           /proc         proc     defaults      0    0

tmpfs         /tmp          tmpfs   defaults      0    0

sysfs           /sys           sysfs    defaults      0    0

tmpfs         /dev           tmpfs   defaults      0    0

TI-AM1808_LINUX开发笔记_第3张图片


9. 建立文件init.d目录,并新建rcS文件,如下

 

inittab中指定,一般在嵌入式系统中inittab很简单,就是指定rcS脚本,然后打开一个登录
终端(甚至不开终端)。所以rcS脚本里应该加上你想在系统启动之初想干的事情。

etc/rcS内容:

/bin/mount –a

改变rcS权限:sudo chmod +x rcS

10. 创建profile文件:/etc/profile用户从终端登录后,运行的脚本。如果系统不加用户登录机制,这个脚本就不会被运行了。


etc/profile内容:

export HOSTNAME=HZDL

export USER=root

export HOME=root

export PSI="[$USER@$HOSTNAME \W]\#"

PATH=/bin:/sbin:/usr/bin:/usr/sbin

LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH

export PATH LD_LIBRARY_PATH

11.创建设备文件。因为根文件系统中必须有一个设备节点

TI-AM1808_LINUX开发笔记_第4张图片

mknod console c 5 1     mknod null c 1 3


你可能感兴趣的:(linux,交叉编译,嵌入式系统)