资源描述
TI-AM1808_LINUX开发笔记
一、开发环境
1.windows XP + VMware+ubuntu10.04
2.共享目录:ubuntu
3.ubuntu开发目录:/home/liudong
3.编译工具:arm-none-linux-gnueabi-gcc 4.3.3
4.系统硬件 处理器:AM1808,64M SDRAM,128M nandflash。
5.虚拟机网络设置
本机PC: ip:192.168.1.61 掩码:255.255.255 网关:192.168.1.1
虚拟网卡net1: ip:192.168.1.200 掩码:255.255.255 网关:192.168.1.1
虚拟网卡net8: ip:192.168.1.201 掩码:255.255.255 网关:192.168.1.1
虚拟机连接方式:bridged
Linux 系统设置:ip:192.168.1.62 掩码:255.255.255 网关:192.168.1.1
二、开发工具
2.1 安装系统及工具
1.安装ubuntu系统
2.设置ubuntu与XP的共享目录
系统安装好以后,没有GCC编译器,因此需要先安装gcc编译工具。解决方法:
#sudo apt-get install g++
3.ubuntu系统默认是用户账户登录,因此刚装好系统后,root用户没有密码,要设置新密码可以采用命令
$:sudo passwd root
切换到root用户的命令
#su
切换回用户账户命令
#su user
4.安装vm-tool,并通过option设置共享文件夹
5.安装后如果能看到hgfs文件夹,但看不到共享的目录,则解决方法为:
#sudo apt-get install open-vm-dkms
出现选择提示时,直接选择Y
#sudo mount –t vmhgfs .host:/ /mnt/hgfs
6.安装交叉编译工具链
拷贝工具文件到tool目录下,然后解压文件到该目录中
添加路径:
更新文件:
#source /etc/profile
查看工具是否安装成功
2.2 安装tftp和nfs服务器
1.tftp-hpa是客户端,tftpd-hpa是服务端。安装TFTP软件命令为:
#sudo apt-get install tftp-hpa tftpd-hpa
2.配置TFTP服务器
3.启动tftp服务器
NFS服务器
安装nfs服务器命令
#sudo apt-get install nfs-kernel-server
/etc/exports配置
可以用showmount -e 查看配置文件
如果配置文件改动,可以用下面命令更新配置
重启NFS服务
查看状态
自己挂接自己
如果配置文件后没进行更新,可能出现下面情况。可以用exprot –r进行更新
2.3 关闭防火墙
Sudo ufw disable
2.4 M1808烧写各个文件
一、在uart2启动模式下,通过sfh_OMAP-L138.exe烧写ubl.bin和u-boot.bin文件至nandflash中;
1、sfh_OMAP-L138.exe -erase -targetType INTDEV0 -flashType NAND -p COM1
2、sfh_OMAP-L138.exe -flash -targetType INTDEV0 -flashType NAND -v -p COM1 ubl_INTDEV0_NAND.bin u-boot.bin
tftp安装配置:
=====================================================================
Putty连接不上ubuntu解决
Ubuntu自身默认是不带openssh server的,而是只有openssh client。使用命令
sudo apt-get install openssh-server
2.5 查找进程ID
#ps –as 可以查看进程对应的ID
杀掉进程
#kill ID
安装TI-SDK
在ubuntu中,直接./ 执行。安装完成后执行 ./setup.sh
安装SDK
直接在终端中执行 ./dvsdk…..
提示选择否
配置环境变量
安装目录下执行 ./setup.sh
To test your NFS setup, follow these steps:
1. Copy the kernel Image (uImage) from the /home/<useracct>/<target_name>/DaVinci-PSP-SDK-03.#.#.#/images/kernel/<Platform> directory of the SDK software installation to the /tftpboot directory of your Linux host workstation. This kernel will be used to test the NFS target file system. If you do not have a TFTP server configured please see the Setting up a TFTP Server page.
host $ cp /home/<useracct>/<target_name>/DaVinci-PSP-SDK-03.#.#.#/images/kernel/<Platform>/uImage /tftpboot
2. Get the IP address of your host Linux workstation as follows. Look for the IP address associated with the eth0 ethernet port.
host $ /sbin/ifconfig
3. Open a terminal session to connect to the EVM board via RS-232 using the instructions in the Connecting to a Console Window section. If you have a Windows workstation, you can use TeraTerm. If you have a Linux workstation, you might use Minicom. (You may need to turn on line wrap)
4. Power on the EVM board and abort the automatic boot sequence by pressing a key in the console window.
5. Set the following environment variables in the console window:
EVM # setenv nfshost <Linux Host IP address>
EVM # setenv rootpath <directory to mount>
NOTE: The <directory to mount> must match what you specified in step 4 of the Exporting a Shared File System for Target Access section. For example, /home/<useracct>/workdir/filesys.
EVM # setenv serverip <Linux Host IP address>
EVM # setenv bootfile uImage
EVM # setenv bootcmd 'dhcp;tftp;bootm'
EVM # setenv bootargs console=ttyS2,115200n8 noinitrd rw ip=dhcp root=/dev/nfs nfsroot=${nfshost}:${rootpath},nolock mem=32M
NOTE: that the setenv bootargs command should be typed on a single line. Also note that you should avoid using the numeric keypad to enter numbers, as it can sometimes insert extra invisible characters.
NOTE: The use of parenthesis for variable substitution is being deprecated for new U-boot releases - use curly braces {} instead. Check http://www.denx.de/wiki/view/DULG/CommandLineParsing
Hints: You may want to use the printenv command to print a list of your environment variables. You can also save these setenv commands in a .txt file from which you can paste them in the future.
6. Save the environment so that you do not have to retype these commands every time you cycle power on the EVM board:
EVM # saveenv
7. Boot the board using NFS:
EVM # boot
NOTE: The first boot of this file system may take a while to complete while security keys are being generated. Subsequent boots will not have this delay.
8. You can now log in as "root" in the target with no password required.
三、编译U-BOOT
3.1编译u-boot
编译时,源文件应该放在具有操作权限的文件中。
修改设置
1.修改默认选项
修改29行
修改139行,环境偏移量和环境变量长度
修改244 MMC设置
3.编译
配置:
u-boot主要配置内容为RAM与FLASH的大小,引导内核是从那里启动等
修改文件为:…./include/configs/da850evm.h
3.2环境变量设置
从nfs启动文件系统
四、编译内核
4.1 编译命令
注:编译前应该讲u-boot编译后生成的mkimage拷贝到/bin下,或者添加mkiamge的路径到环境变量。 …/u-boot…/tool
配置内核
如果不能使用make menuconfig 命令,则需要安装如下插件:
4.2 修改文件
修改液晶驱动参数
A
B
C
D
修改mach-davinci/
系统分区信息:
编译2.26.37时:
1
4.3触摸屏移植
修改文件
修改
大概649行
大概1121行
///////////////////////////////////////////////////////////////////
SPI0修改文件:
1.
2
3
4.
5
6
7
8
9
4.4 配置文件
配置文件命令:
============================
输入make menuconfig时出现上面错误,解决办法
4.5内核启动
五、编译文件系统
5.1.制作文件系统
1.下载busybox,下载地址
本次的版本为busybox-1.19.4.tar.bz2
2解压
3.配置
4.编译
5.安装
6.创建系统其他文件
7.拷贝编译工具链的库文件
8.添加启动文件
添加内容如下:
9.创建fstab文件,并添加内容
10.建立文件init.d目录,并新建rcS文件,如下
改变rcs权限
11.创建profile文件
12.创建设备文件。因为根文件系统中必须有一个设备节点
5.2制作工具mkfs.jffs2
13.解压zlib
配置
修改makefile
编译安装。权限不够加sudo
14.安装MTD
解压
进入util文件,修改Makefile文件的编译器为交叉编译器,生成PC版本的只需将CROSS那一行屏蔽掉即可
编译安装完成后将mkfs.jffs2拷贝到/bin下
另一种方法:直接使用apt-get install mtd-utils命令
生成根文件
=======================我是华丽分割线=================================
1. 编译busybox
解压源码
打补丁
2.配置,配置内容请参考资料中busybox_rootfs.pdf。以及配置好的rootfs-ld.config文件。
#make xconfig
3.编译
#make
1、首先制作好文件系统所需的文件
2、安装制作文件系统镜像的工具,有很多种cramfs,yaffs2,yaffs,jffs,jffs2。这里安装制作jffs2镜像的工具。
首先安装ZLIB,复制并解压
配置
修改makefile文件
@make
@sudo make install
首先拷贝安装包到系统
解压文件,并修改Makefile设置
切换到root用户,在util路径下执行make后再执行make install
安装完成后,将在系统文件中生成相应的文件,如上图。
编译ARM版本完成后,在修改Makefile文件,编译PC版本的mkfs.jffs2,使得我们能在PC行生成jffs2文件
5.2生成根文件系统镜像
六、编译应用程序
6.1 安装QT -SDK
6.2 安装tslib-1.4
拷贝至安装路径,进行解压
1
2
3
rm 在./configure错误才执行
4
5
6
将代码拷贝到根文件系统中(注意tslib依赖的动态链接库文件,记得要拷贝到根文件系统的/lib里),并修改/etc/porfile就好了.这些在我提供的网页里都有,我就不在这重复了,如果像我一样设置好开发板的根目录路径存放tslib(/work/fs/rootfsln/usr/tslib)就不用拷贝了.
如果忘了拷贝动态库,就会出现以下提示:
error while loading shared libraries : libdl . so . 2 : cannot open shared object file : No such file or directory
事实上,根目录、tslib和qt的交叉编译器应该一致才对,这样动态库就不会有冲突问题.
(5)$TSLIB_ROOT/ etc/ts.conf配置
module_raw input
module pthres pmin = 1
module variance delta = 30
module dejitter delta = 100
module linear
注意:如果使用了带滤波的触摸屏驱动,在ts.conf文件中可以屏蔽
#module pthres pmin=1
#module variance delta=30
#module dejitter delta=100
这三行,因使用内核滤波也可以保障稳定.但是再加上tslib的滤波也可以,效果更好.
(6) 在开发板的/work/fs/rootfsln/etc/profile文件里添加运行tslib的环境变量(一定要放到/etc/profile,放到/etc/init.d/rcS里就没有作用,原因是export只能在当前shell和它的子shell有用,不能影响登录的shell)
# Set TSLIB
echo "Set ENV for tslib......"
export QWS_MOUSE_PROTO = TPanel : / dev / event0
export TSLIB_ROOT = / usr / tslib
export TSLIB_TSDEVICE = / dev / event0
export TSLIB_CALIBFILE = $ TSLIB_ROOT / etc / pointercal
export TSLIB_CONFFILE = $ TSLIB_ROOT / etc / ts . conf
export TSLIB_PLUGINDIR = $ TSLIB_ROOT / lib / ts
export TSLIB_CONSOLEDEVICE = none
export TSLIB_FBDEVICE = / dev / fb0
export LD_LIBRARY_PATH = $ LD_LIBRARY_PATH : $ TSLIB_ROOT / lib
(这句我注释掉的原因是:有一种说法是使用 LD_LIBRARY_PATH这样设置不安全,我的做法是把路径添加到/work/fs/rootfsln/etc/ld.so.conf文件中,然后执行ldconfig命令,这样就可以了.ldconfig在你的交叉编译工具里就有)
6.3 编译ARM的qt库文件
1.配置
最新
编译文件系统的qt库时还要加上 –qt-mouse-tslib,减少输出信息加 –silent
之后分别选择o和yes
以前老配置
注:关于配置选项
A
b
c
D
其他
=======================我是分割线========================
2.make
6.4使用qt进行开发
1.使用qtcreator编译
创建好工程后,点击左边项目,设置qmake路径,并修改环境变量。Qmakespec为变量的qt-arm的路径。
2.使用命令行编译
在目录下设置环境变量文件
修改profile文件,增加后面几句
配置好环境变量后
#qmake –project
#qmake
#make
完成编译
6.5源程序在linux下不能编辑问题
第三步:重新打开Qt Creator,打开一个文件,选择“Edit”菜单下的“Select Encoding...”,此时弹出的文本编码对话框中就已经出现了“GB2312”。
6.6手动添加链接路文件
#In –s /xxx/xx…../xxx.so /xxx/xx…../xxx.so
链接 参数 需要链接目标文件名 存放链接文件名
七、烧写程序
烧写UBL和U-BOOT
1. 切换核心板启动模式为UART2模式,上电后双击run.bat
注意:a.烧写时应确定烧写的文件与 run.bat批处理文件 在同一目录下
b.默认为PC机的COM1,如果与你实际应用不符合,应该用记事本打开进行修改。
烧写内核文件
1.通过tftp烧写
2.通过USB
启动usb
@usb start
查看usb信息
@usb info
查看usb文件
@fatls usb 0:1
将usb文件读入内存中
@fatload usb 0:1 0xc0700000 uImage
烧写内核到NAND
@nand erase 0x200000 0x220000
// 起始地址 大小
@nand write.e 0xc0700000 0x200000 0x220000
// 内存地址 nand起始地址 大小
烧写文件系统
@fatload usb 0:1 0xc1800000 rootfs.jffs2
@nand erase 0x600000 0x2800000
@nand write.jffs2 0xc1800000 0x600000 0x2800000
@reset
从nfs启动时,uboot环境变量设置为:
从nand启动文件系统时:
八、驱动程序
1.编译模块文件
写好makefile文件后,直接在该文件路径下输入命令
#make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
2.加载模块
#insmod ***.ko
3.移除模块
#rmmod ***.ko
4.查看节点
#lsmod
5.创建节点
#cat /proc/devices
查找设备的主设备号
#mknod /dev/*** c major minor
解释:c:创建节点类型
major:主设备号
minor:次设备号
6.
#include <linux/fs.h>
驱动必须,关于文件系统的头文件
7.
#include <linux/interrupt.h>
int request_irq(unsigned int irq,irqreturn_t (*handwr) (), unsigned long flags, const char *dev_mame, void *dev_id); //注册中断
Void free_irq(unsigned int irq, void *dev_id); //注销中断
8.1 输入输出驱动
AM1808 AMEIF地址
硬件:
译码部分:
输入
输出
模拟量
测量
温度
Makefile 文件格式:
编译命令:
展开阅读全文