前期准备
Windows系统下
安装虚拟机
- 安装以Linux为内核的操作系统(如Ubuntu)
安装secureCRT超级终端
- 用于查看开发板输出的调试信息并与开发板交互
安装DNW
安装Source Insight
- 在Windows下查看及其修改代码
虚拟机系统下
设置文件共享
安装交叉编译工具链,并导入环境变量
解压
mkdir /usr/local/arm/
创建一个新文件夹,用于存放编译链工具mv /mnt/hgfs/Winshare/arm-2009q3.tar.bz2 /usr/local/arm/
把下载到的编译工具链压缩包移动到上面的文件夹cd /usr/local/arm/
tar -jxvf arm-2009q3.tar.bz2
安装
mv /mnt/hgfs/Winshare/mk-arm-linux.sh /usr/local/arm/arm-2009q3/bin
根据自己的共享目录名字改动cd /usr/local/arm/arm-2009q3/bin
source mk-arm-linux.sh
导入环境变量
gedit ~/.bashrc
打开这个文件,在最下面添加以下一行export PATH=/usr/local/arm/arm-2009q3/bin:$PATH
source ~/.bashrc
64位兼容32位
- 如果Ubuntu是64位的
|
|
测试
- 在任意路径下敲
arm-linux-gcc -v
- 返回信息
gcc version 4.4.1
- 表示你已经安装成功了
安装NFS
安装
sudo apt-get install nfs-kernel-server -y
重启
service rpcbind restart
service nfs-kernel-server restart
建立文件目录
mkdir /opt/Rootfs_TQ210
# 建立根文件目录chmod 777 -R /opt/Rootfs_TQ210
mkdir /opt1
#建立访问目录,位置不固定
配置
sudo vi /etc/exports
/opt/Rootfs_TQ210 *(rw,sync,no_root_squash,no_subtree_check)
#在文本最后加上/opt/Rootfs_TQ210目录是与nfs服务客户端共享的目录,*代表允许所有的网段访问
rw:挂载此目录的客户端对该共享目录具有读写权限
sync:资料同步写入内存和硬盘
no_root_squash:客户机用root访问该共享文件夹时,不映射root用户(root_squash:客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户)
no_subtree_check:不检查父目录的权限
测试
sudo exportfs -r
#更新文件sudo showmount localhost -e
#下面是显示信息Export list for Ubuntu2jmlin:
/opt/Rootfs_TQ210 *
本地挂载
mount -t nfs -o nolock localhost:/opt/Rootfs_TQ210 /opt1
#挂载Rootfs_TQ210
目录到/opt1
目录下
Uboot
获取源码
开发板光盘/bootloader/uboot_TQ210_1.3.4_V1.7.tar.bz2
- 复制到Ubuntu
/opt/
目录下 - 解压
tar -jxvf uboot_TQ210_1.3.4_V1.7.tar.bz2
源码检查
清理
make distclean
修改
- 交叉编译工具链路径
vi Makefile
# 在相应地方(149)添加CROSS_COMPILE = arm-linux-
编译前配置
make TQ210_config
编译
make -j8
烧录
- 使用DNW烧录
进入Uboot命令命令行
- 开发板开机按下空格键,进入天嵌制作的操作菜单
- 按下字母
q
退出天嵌的操作菜单,进入uboot命令行
设置uboot环境变量
本地IP地址和服务器IP地址要在同一网段
|
|
Kernel
获取源码
开发板光盘/Linux资源/Linux源码包/3.0.8/Kernel_3.0.8_TQ210_for_Linux_v2.2.tar.bz2
- 复制到Ubuntu
/opt/
目录下 - 解压
tar -jxvf Kernel_3.0.8_TQ210_for_Linux_v2.2.tar.bz2
源码检查
清理
make distclean
编译前配置
cp config_for_TQ210_Linux_v2.1_CoreB .config
- 检查Makefile所配置的交叉编译链、是否为arm架构
配置生成默认文件
cp config_for_TQ210_Linux_v2.1_CoreB .config
#直接使用天嵌已经给的默认配置文件
kernel 裁剪
make menuconfig
- 如果是第一次使用的话,可能会出现错误
- 根据错误,需要下载
ncurses
,先执行sudo apt-get install libncurses5-dev
来下载,然后再make menuconfig
Device Drivers —>
- Multimedia support —>
- Video capture adapters —>
- [*] Samsung Camera Interface (FIMC) driver // 移除摄像头驱动
- [ ] camera ov3640
- [ ] camera ov9650
- [ ] camera tvp5150
- [ ] camera saa7113
- [*] Samsung TV Driver
- [ ] HDMI CEC driver support // 移除HDMI遥控驱动
- [*] HDMI HPD driver support
- [*] Samsung Camera Interface (FIMC) driver // 移除摄像头驱动
- Video capture adapters —>
- HID Devices
- [ ] USB Human Interface Device (full HID) support // 移除鼠标驱动
- Networking support
- [ ] Bluetooth subsystem support // 移除蓝牙驱动
- Multimedia support —>
File systems —>
- [*] Network File Systems —>
- <*> NFS client support // 添加NFS驱动
- [*] NFS client support for NFS version 3
- [*] NFS client support for the NFSv3 ACL protocol extension
- [*] NFS client support for NFS version 4 (EXPERIMENTAL)
- [ ] NFS client support for NFSv4.1 (DEVELOPER ONLY)
- [*] Root file system on NFS
- [*] NFS client support for NFS version 3
- <*> NFS client support // 添加NFS驱动
- [*] Network File Systems —>
RootFS
获取源码
开发板光盘/Linux资源/Linux源码包/rootfs_linux_v1.6_CoreB_src_20140415.tar.bz2
- 复制到Ubuntu
/opt/
目录下 - 解压
tar -jxvf rootfs_linux_v1.6_CoreB_src_20140415.tar.bz2
源码检查
- 检查Makefile所配置的交叉编译链、是否为arm架构
- 设置安装目录为
/opt/Rootfs_TQ210
编译
make
安装
make install
Web服务器移植
移植BOA-0.94.13
获取源码
cd /opt
wget https://nchc.dl.sourceforge.net/project/boa/boa/0.94.13/boa-0.94.13.tar.gz
tar -zxvf boa-0.94.13.tar.gz
编译前配置
cd src
./configure
vi Makefile
- 将
CC
和CPP
分别修改为CC=arm-linux-gcc
和CPP=arm-linux-g++ -E
- 将
vi boa.c
在行225到227,将其注释掉123if (setuid(0) != -1) {DIE("icky Linux kernel bug!");}vi compat.h
- 把120行修改为
#define TIMEZONE_OFFSEST(foo) foo->tm_gmtoff
编译
make
Error
- 可能出现错误
make: yacc: Command not found
sudo apt-get install -y byacc
- 可能出现错误
make: lex: Command not found
arm-linux-strip boa
移植cgic库
获取源码
cd /opt
wget https://boutell.com/cgic/cgic205.tar.gz
tar -zxvf cgic205.tar.gz
编译前配置
vi Makefile
以下为修改内容12345678910CC=arm-linux-gccAR=arm-linux-arRANLIB=arm-linux-ranlibcp libcgic.a /usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/armv4t/lib # 这两行根据自己所安装cp cgic.h /usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/usr/include # 交叉编译工具链位置改动$(CC) $(CFLAGS) cgictest.o -o cgictest.cgi $(LIBS)$(CC) $(CFLAGS) capture.o -o capture $(LIBS)
编译
make
优化
arm-linux-strip capture
配置Web服务器
配置BOA
cd /opt/roorfs_TQ210
mkdir web etc/boa
# 在根文件系统新建web/、etc/boa/目录cp /opt/boa-0.94.13/src/boa rootfs_TQ210/sbin
cp /opt/boa-0.94.13/boa.conf rootfs_TQ210/etc/boa
- 修改
boa.conf
文件vi etc/boa/boa.conf
|
|
cp /etc/mime.types /opt/rootfs_TQ210/etc
配置cgic库
- 建立
cgi-bin
目录mkdir /opt/rootfs_TQ210/web/cig-bin
cp /opt/cgic205/capture /opt/rootfs_TQ210/web/cgi-bin/
cp /opt/cgic205/cgictest.cgi /opt/rootfs_TQ210/web/cgi-bin/
测试
静态网页测试
- 在PC段网页浏览器输入地址:
192.168.0.105
CGI脚本测试
在PC段网页浏览器输入地址:
http://192.168.0.105/cgi-bin/cgictest.cgi
在PC段网页浏览器输入地址:
http://192.168.0.105/cgi-bin/helloweb.cgi
注:本文内容部分来自互联网整理,部分来自个人经验总结;本文将持续收集更新,欢迎留言补充!