海思最新出了一款超低內存的芯片HI3518EV201(內存只有32M)
在開發過程中對內核的裁剪考驗相當大,當然海思也提供了參考的裁剪方案《hi3518ev20x_mini_config.txt》。
但是不能完全按照海思提供的裁剪方案來玩,因為該內核不支持USB、不支持frame buf、不支持以太網及nfs、不支持進程間通信等。
其中不支持進程間通信是指將內核配置 General setup中的System V IPC選項去掉;System V IPC共有三種類型:System V消息隊列、System V 信號量、System V 共享內存區。即是不支持消息隊列、信號量和共享內存三種進程間通信方式。
1.修改Makefile,在首行位置添加以下兩行:
ARCH=arm
CROSS_COMPILE=arm-hisiv300-linux-
在make menuconfig 后在File systems ---> 中看到:
a.該內核只支持ext4文件系統
b.[ ] Miscellaneous filesystems --->選項壓根就沒有勾選上,及時勾選上進去也看不到jffs2的選項
2.在Miscellaneous filesystems --->選項中添加jffs2選項卡:
Device Drivers --->
<*> Memory Technology Device (MTD) support --->(這個選項一選上后,File systems ---> 中的Miscellaneous filesystems --->就會變成必選項了) 保存
3.去掉對ext4文件系統的支持,添加對jffs2和squashfs文件系統的支持
去掉:
File systems --->
< > The Extended 4 (ext4) filesystem
添加:
File systems --->
-*- Miscellaneous filesystems --->
<*> Journalling Flash File System v2 (JFFS2) support
和<*> SquashFS 4.0 - Squashed file system support
4.編譯一遍 make uImage,然后將zImage燒到板子上go 0x81000000, /etc/init.d/S00devs腳本中有兩句
mount -t squashfs /dev/mtdblock2 /mnt/app
mount -t jffs2 /dev/mtdblock3 /mnt/app_ext/
發現以下錯誤:
mount: mounting /dev/mtdblock2 on /mnt/app failed: No such device or address
mount: mounting /dev/mtdblock3 on /mnt/app_ext/ failed: No such device
5.解決mount 出錯:
Device Drivers --->
<*> Memory Technology Device (MTD) support --->
[*] Command line partition table parsing
6.再編譯一遍 make uImage,然后將zImage燒到板子上go 0x81000000,因為squashfs文件系統默認是ZLIB壓縮算法的,而我們使用的是壓縮率最高的XZ算法,因此會發現以下錯誤:
SQUASHFS error: Filesystem uses "xz" compression. This is not supported
mount: mounting /dev/mtdblock2 on /mnt/app failed: Invalid argument
7.解決xz壓縮算法出錯:
File systems --->
-*- Miscellaneous filesystems --->
<*> Journalling Flash File System v2 (JFFS2) support 下面的
[*] Include support for ZLIB compressed file systems(去掉勾選)
[*] Include support for XZ compressed file systems (加上勾選)
8.跑起來后,boot.sh腳本中對jffs2文件系統進行操作時,發現以下錯誤,因為加密算法類型0x07沒有打到內核中:
jffs2: compression type 0x07 not available
jffs2: Error: jffs2_decompress returned -5
9.解決xz壓縮算法出錯:
File systems --->
-*- Miscellaneous filesystems --->
[*] Advanced compression options for JFFS2 下面的
[*] JFFS2 LZO compression support (加上勾選)
10.ok了,接下來就是遇到一些簡單的錯誤,不再做詳細闡述。