手头有一个海思3512开发板,我用来评估是否来进行开发项目。因此来对此进行深入分析。
一.基本情况
海思的 Hi3512 的CPU内核是ARM9 (ARM926EJ-S),主频最高达到264MHz,它的卖点是支持H.264/mjpeg 硬件解码的低成本低功耗ARM CPU。它主要目标市场是IPCAM,DVR和视频服务器市场,因此与一般通用的嵌入式CPU有不少区别:
我们以市场上常见的s3c6410对比一下。
视频接口:
Hi带有较多视频的接口,输入接口有:2路BT.656/601,1路 720p的数字输入接口,摄像头也带了ccd和cmos接口。 对一般CPU常见的LCD接口反而不带。
Hi3512自带一个PCI接口,方便多CPU级联或接硬盘,s3c6410没有带这个接口.
因为它常工作于恶劣的工作环境,因此存储器使用以Nor Flash为主,而且没有带大容量Nand Flash接口.
其基本特性可以参见《Hi3512 H.264编解码处理器简介.pdf》
对于基本寄存器的操作和使用手册,即CPU的datasheet,是《Hi3511/Hi3512 H.264编解码处理器用户指南.pdf》
二。开发板分析
完整开发一个视频应用,可能需要开发板/摄像头/电视监视器
开发板接口:
串口配置:波特率 115200: 8-N-1
电源:使用12v 电源.
开发板的软件结构:
其运行环境以Linux 为主。目前内核使用的版本是 2.6.14.(这个是比较老的版本)
bootloader 使用 u-boot 1.1.4.
根文件系统支持 jffs2,cramfs .
gcc 使用 3.4.3 ,在SDK使用的名字比较长,是 arm-hismall-linux-gcc
Hi3512与Hi3511共用开发环境,使用官方发布的 Hi3511 VSSDK_V1.1.2.3
三.基本开发环境。
官方发布的开发环境,是把所有软件打包.Hi3511_VSSDK_V1.1.2.3.tgz,解压后运行一个脚本.
tar xvf Hi3511_VSSDK_V1.1.2.3.tgz
tools/toolchains/cross.install #安装编译器
./sdk.unpack #解压其它部分.
这种发布形式没有象其它Linux的开发环境,按gcc ,内核,u-boot,根文件系统分开打包.而且一锅烩,我理解是想做成傻瓜式安装,方便对Linux不熟的开发者使用。
但是很不幸,这样的本意几乎无法实现,首先Linux发布版本根多,试图用一个脚本搞掂所有发布版就不现实,比如我在Ubuntu 10就安装出错了,要修改脚本,即便脚本能运行,看一下官方补充的补充的安装手册,步骤相当多。
为什么不按大家约定的安装形式来安装了?因此你毕竟给熟练的嵌入式Linux开发人员来使用的东西,如果他到现在还是对LINUX还是傻瓜级别,还是别混这一行了。
一锅烩反而让熟练的开发者感到迷惑。比如我的根文件系统,内核安装失败,于是我想手工安装,发现这个目录繁多的东西让我很难处理。哪一个原始版本,哪一个是海思官方修改过的东西。在经过分析后,我按一般嵌入式Linux 的开发环境发布形式,重新将整个SDK分布打包成如下几个压缩包。并且在每一个包进行小的修正方便开发。
arm-hismall-linux-gcc-3.4.3.tar.gz #gcc编译器
arm-linux-2.6.14-hi3512.tar.gz #海思的3512内核.
rootfs-hi3512.tar.gz #根文件系统
u-boot-1.1.4-hi3512.tar.gz #u-boot 源码
mkimage-hismall.tar.gz #根文件系统制作工具,为了方便,这一些程序也加入到arm-linux-gcc 的目录当中。因此这个只是备份
hi3512-image.tar.gz #各种发布文件的image文件
busybox-1.1.2-hi3512.tar.gz #busybox 的源码.
后面均按上述tarball来进行安装使用。
3.1 编译器安装
a).解压
tar xvf arm-hisi-linux-gcc_3.4.3.tar.gz -C /
解压后将一般编译器的习惯,安装在目录 /usr/local/arm/3.4.3-hismall 之下
b) 将编译器加入系统路径
如果用户目录下存在 ~/.bash_profile,则编辑,否则如果存在 ~/.bashrc 也可以编辑。
在脚本中最后面增加如下语句
export PATH="/usr/local/arm/3.4.3-hismall/usr/bin:$PATH"
一般来,RHEL需要编辑 ~/.bash_profile,而ubuntu需要编辑 ~/.bashrc
c)让路径生效
source ~/.bash_profile 或 source ~/.bashrc
用which命令测试是否能找到arm-hisimall-linux-gcc
root@Andrew-server:~# which arm-hismall-linux-gcc
/usr/local/arm/3.4.3-hismall/usr/bin/arm-hismall-linux-gcc
3.2 项目结构
项目可以入在任何目录,比如我放在/home/hxy之下。项目目录名称为hi3512,以下我按我经验划分更为简明,有用的结构。
hi3512
|
+-- rootfs #根文件系统展开目录
|
+-- linux-2.6.14 #内核目录
|
+-- u-boot-1.1.4 # bootloader目录
|
+-- libs #应用库源码目录
|
+-- app #应用程序源码目录
|
+-- output #输出目录
|
+--arm-linux #应用库,程序输出目录
|
+- images #内核,bootloader,根文件系统image等目录
3.3 制作根文件系统
a)解压,在hi3512 目录下运行
tar xvf rootfs-hi3512.tar.gz
b) 制作image:
在hi3512/rootfs 下执行 ./mkimg.rootfs
它将在在 hi3512/output/images 自动生成三种类型的根文件系统,(jffs2,cramfs,cramfs-initrd)
一般是烧录 rootfs-hi3512.jffs2.img 这个文件
3.4 编译内核
a)在项目目录解压 tar xvf arm-linux-2.6.14-hi3512.tar.gz
注意已经在官方原有基本上修正过.