**************************************
stmmac: Rx Checksum Offload Engine supported
stmmac: Rx Checksum Offload Engine supported
Auto login as root ...
Jan 1 00:00:03 login[631]: root login on 'ttyS000'
Welcome to HiLinux.
MACADDR in set is 0:0:23:34:45:66
PHY: 1:02 - Link is Up - 100/Full
3. 运行一下mpp/sample/hifb里的sample_hifb测试程序,出现错误
# pwd
/mnt/mpp/sample/hifb_bak
# ./sample
./sample: can't load library 'libz.so.1'
原因是系统变量的库目录中没有这个库,在文件系统中查找这个库
# find / -name libz.so.1
/mnt/mpp/sample/hifb/lib/libz.so.1
/mnt/mpp/sample/hifb_bak/lib/libz.so.1
/mnt/mpp/sample/hifb_for/lib/libz.so.1
/mnt/qt/lib/libz.so.1
/mnt/lib/libz.so.1
缺少库文件,在配置文件 /etc/profile 中库路径中添加 :/mnt/mpp/sample/hifb/lib
LD_LIBRARY_PATH="/mnt/ls/qt/lib:/usr/local/lib:/usr/lib:/mnt/mpp/sample/hifb_bak"
:/mnt/mpp/sample/hifb_bak 为添加部分
运行 source /etc/profile 执行配置脚本使其生效
4. 这时候运行一下mpp/sample/hifb里的sample_hifb测试程序,仍出现错误
hifb.ko 驱动无法加载
解决方法
将sdk 中的(不是备份中的,其他版本也可能不兼容) mpp/ko文件夹下驱动放到 板子的 /home/decoder/ko_hi3531 目录下,并将 目录下中的 load3531 脚本用 备份中已经修改过的版本代替,然后在配置脚本 /etc/profille 中添加如下行
进入驱动目录, 执行 load3531 脚本添加相关驱动,返回到原来的目录中
cd /home/decoder/ko_hi3531;
./load3531
cd -
5【错误总结】expected specifier-qualifier-list before sth
在使用GCC时经常会遇到expected specifier-qualifier-list before sth之类的错误。specifiers是指void、char、struct Foo等词汇;qualifiers是指像const和volatile一类的关键字。一个词汇再未定义之前就使用就会出项这种错误,可以通过typedef进行定义以后再使用。
我的程序里是缺少结构体 HIFB_LAYER_ID_E 的定义,添加上问题就解决了。
typedef enum
{
HIFB_LAYER_0 = 0x0,
HIFB_LAYER_1,
HIFB_LAYER_2,
HIFB_LAYER_3,
HIFB_LAYER_4,
HIFB_LAYER_CURSOR_0,
HIFB_LAYER_CURSOR_1,
//HIFB_LAYER_CURSOR,
HIFB_LAYER_ID_BUTT
} HIFB_LAYER_ID_E;
下面是网上的资料
hi3531自带的SDK已经有了,自己装的反而可能不兼容
安装 mkfs.jffs2 软件
下载:
ftp://sources.redhat.com/pub/jffs2/mkfs.jffs2 或者使用命令: apt-get install mtd-utils
2. 挂载、制作jffs2文件系统
在这里,为了避免重新制作文件系统,我采用了备份的jffs2文件系统hi3531_rootfs_9856k.jffs2。在整个制作jffs2文件系统的过程中,我们采用root权限。
2.1. 挂载文件系统镜像
jffs2文件系统不是块设备,不能直接mount,需要做一些中间步骤。首先,内核必须支持MTD,并且编译了mtdram、mtdblock这两个模块。先先建立一个大于等于要挂载的文件系统的虚拟mtd设备。hi3531_rootfs_9856k.jffs2文件系统为9856k,那么我先建立一个大于等于9856k的虚拟mtd设备。(为了避免制作过程当中向文件系统里边添加大文件,我将mtd大小设置为9856K)
$ sudo modprobe mtdram total_size=9856
其中,total_size的单位是KB,指定mtd的大小。
加载mtdblock产生虚拟块设备并把hi3531_rootfs_9856k.jffs2的内容写入生成的虚拟设备中:
$ sudo modprobe mtdblock
$ sudo dd if=/slq/tftpboot/hi3531_rootfs_9856k.jffs2 of=/dev/mtdblock0
(注:dd命令是指定大小的块拷贝文件,并在拷贝的同时进行指定的转换。if=file:输入文件名,缺省为标准输入。of=file:输出文件名,缺省为标准输出。)
创建挂载点:
$mkdir /mnt/mtd
现在就可以mount了:
$ sudo mount -t jffs2 /dev/mtdblock0 /mnt/mtd
进入/mnt/mtd之后即可对文件系统进行修改!
sudo mount -t hi3531_rootfs_9856k /dev/mtdblock0 /mnt/mtd
sudo mkfs.jffs2 -r jffs2test1 -o fstest_slq14.3.04.jffs2 -e 0x20000 --pad=0x9A0000 -s 0x800 ?n -l
sudo mkfs.jffs2 -r mtd -o fstest_slq14.3.04.jffs2 -e 0x10000 --pad=0x9A0000 -s 0x800 ?n -l
sudo mkfs.jffs2 -r mtd -o fstest_slq14.3.04.jffs2 -e 0x10000 --pad=0x9A0000 -s 0x800 -l
sudo mkfs.jffs2 -r mtd -o fsbusybox_slq14.3.05.jffs2 -e 0x10000 --pad=0x9A0000 -s 0x800 -l
sudo mkfs.jffs2 -r fscontentbak.jffs2 -o fsbusybox64k2k_slq14.3.05.jffs2 -e 0x10000 --pad=0x9A0000 -s 0x800 -l
说明: 页大小0x1000 4k
块大小0x40000 256k
64k=0x10000 的块大小 block size
2k =0x800 的页大小 page size
2. 挂载、制作jffs2文件系统
在这里,为了避免重新制作文件系统,我采用了英蓓特公司的MBS-SAM9G45开发板自带的jffs2文件系统Angstrom-x11-image-demo-glibc-at