hi3518e笔记

2024-09-03 06:38
文章标签 笔记 hi3518e

本文主要是介绍hi3518e笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开发环境

Ubuntu版本:14.04LTS

SDK版本:V1.0.A.0

sdk安装

拷贝Hi3518_SDK_V1.0.A.0.tgz至Linux下

#tar -zxvf Hi3518_SDK_V1.0.A.0.tgz

# cd Hi3518_SDK_V1.0.A.0/

# ./sdk.unpack

安装SDK报错查看链接:http://blog.csdn.net/u013286409/article/details/45305911

编译整个osdrv目录

顶层makele
all: prepare hiboot hikernel hirootfs_prepare hibusybox hipctools hiboardtools hirootfs_build
prepare
task [0] prepare
task [1] build boot
task [2] build kernel
task [3] prepare rootfs
task [4] build busybox
task [5] build tools which run on pc
task [6] build tools which run on board
task [7] build rootfs

清除...
# make OSDRV_CROSS=arm-hisiv100nptl-linux CHIP=hi3518e clean
编译...
# make OSDRV_CROSS=arm-hisiv100nptl-linux CHIP=hi3518e all

kernel编译

顶层路径:Hi3518_SDK_V1.0.A.0/osdrv/kernel/linux-3.0.

# cp arch/arm/configs/hi3518e_full_defconfig .config
# make ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux- menuconfig
# make ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux- uImage

arch/arm/boot/目录下生成了uImage镜像

# ls arch/arm/boot/uImage -lh
-rw-r--r-- 1 root root 2.8M Jan 15 10:27 arch/arm/boot/uImage

clean cmd

# make ARCH=arm CROSS_COMPILE=arm- hisiv100nptl -linux- clean

按照默认配置编译出来的内核比较大,2.8M.

内核裁剪

目标:减小到2M以内
内核压缩方式修改 : Gzip ---> LZMA
General setup --->
Kernel compression mode (Gzip) --->
( ) Gzip
(X) LZMA
( ) LZO

File systems --->
-*- Miscellaneous filesystems --->
    < > YAFFS2 file system support  
YAFFS2文件系统主要用在nandflash上,当前项目用的SPI flash,可以禁掉
File systems --->
    < > Second extended fs support
ext2/ext3文件系统貌似也用不上
Device Drivers  ---> 
    [*] USB support  --->
        < >   USB Modem (CDC ACM) support             
        < >   USB Wireless Device Management support
        < >   USB Mass Storage support                   U盘的支持
        < >   USB Mustek MDC800 Digital Camera support

Kernel hacking --->

[ ] Debug Filesystem

生成内核镜像文件信息如下

Image Name:   Linux-3.0.8
Created:      Mon Jan 18 15:23:51 2016
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    2054496 Bytes = 2006.34 kB = 1.96 MB
Load Address: 80008000
Entry Point:  80008000

添加exfat支持后大小:1.99M


尝试继续裁剪。。。

General setup --->
[ ] Enable AIO support

System Type --->
[ ] Support Thumb user binarie
File systems --->
[ ] Quota support

编译结果如下:
Image Name:   Linux-3.0.8
Created:      Mon Jan 18 17:41:21 2016
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    2071412 Bytes = 2022.86 kB = 1.98 MB
Load Address: 80008000
Entry Point:  80008000
继续裁剪...
File systems --->
-*- Miscellaneous filesystems --->
< > Compressed ROM file system support (cramfs)

编译结果如下:
Image Name:   Linux-3.0.8
Created:      Mon Jan 18 17:55:52 2016
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    2068876 Bytes = 2020.39 kB = 1.97 MB
Load Address: 80008000
Entry Point:  80008000
继续裁剪...
Device Drivers  --->
[*] Network device support  --->
[*]   Wireless LAN  ---> 
<*>   Ralink driver support  --->
--- Ralink driver support
<*>   Ralink rt2500 (USB) support 
< >   Ralink rt2501/rt73 (USB) support
< >   Ralink rt27xx/rt28xx/rt30xx (USB) support
[ ]   Ralink debug output 
Image Name:   Linux-3.0.8
Created:      Mon Jan 18 18:30:33 2016
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    2062364 Bytes = 2014.03 kB = 1.97 MB
Load Address: 80008000
Entry Point:  80008000

继续裁剪...
[*] Networking support  --->
    Networking options  --->
       < > The IPv6 protocol  ---NO USE
一个IPV6协议去掉减少了0.09M
Image Name:   Linux-3.0.8
Created:      Tue Jan 19 09:43:25 2016
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    1969684 Bytes = 1923.52 kB = 1.88 MB




uboot编译

顶层路径:Hi3518_SDK_V1.0.A.0/osdrv/uboot/u-boot-2010.06

# make ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux- hi3518e_config

# make ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux-

# cp u-boot.bin ../../tools/pc_tools/uboot_tools/

# cd ../../tools/pc_tools/uboot_tools/

# ./mkboot.sh reg_info_hi3518e.bin u-boot-ok.bin 

生成的u-boot-ok.bin为可用的uboot镜像

配置busybox

顶层路径:Hi3518_SDK_V1.0.A.0/osdrv/busybox/busybox-1.16.1

# make ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux- menuconfig

# make ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux-

# make ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux- install

编译安装后输出目录为_install

制作JFFS2根文件系统

顶层路径:Hi3518_SDK_V1.0.A.0/osdrv/pub

# tar -zxvf rootfs_uclibc.tgz

# mkfs.jffs2 -d ./rootfs_uclibc -l -e 0x20000 -o rootfs.jffs2

备注:貌似有点问题,待解决!


备注:

d指定根文件系统
l little-endian 小端模式
e Flash 的块大小
o 输出映像文件


SPI FLASH 烧写uboot

mw.b 0x82000000 ff 100000;tftp 0x82000000 u-boot-ok.bin;sf probe 0;sf erase 0x0 0x100000;sf write 0x82000000 0x0 0x100000;

备注:

【mw.b】内存初始化,填充内存。把内存 0x82000000 开始的 0x10000 字节设为 0xFF。

【sf probe 0】 探测并初始化SPI FLASH;

【0x82000000】内存地址

uboot相关参数

【bootargs】启动 OS 时的启动参数

【bootdelay】设置自启动延时时间。单位为秒 <-1>关闭自启动功能



知识点备注

压缩格式
       gzip是GNUzip的缩写。用于UNⅨ系统的文件压缩。我们在Linux中经常会用到后缀为.gz的文件,它们就是GZIP格式的。现今已经成为Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件格式。
   LZMA相比另外两种压缩模式,它具有最高的压缩率(同样文件,通过LZMA压缩后的体积通常只有Gzip的70%),但是压缩和解压缩的速度要差一些。适用于spi flash大小非常有限的场合中
  LZO这种压缩方式压缩率最低,但是压缩和解压的速度最快。(目前该算法在 3.4 内核中还不完善,使用该压缩算法会有风险,所以目前并不使用)



这篇关于hi3518e笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1132312

相关文章

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个

Git 的特点—— Git 学习笔记 02

文章目录 Git 简史Git 的特点直接记录快照,而非差异比较近乎所有操作都是本地执行保证完整性一般只添加数据 参考资料 Git 简史 众所周知,Linux 内核开源项目有着为数众多的参与者。这么多人在世界各地为 Linux 编写代码,那Linux 的代码是如何管理的呢?事实是在 2002 年以前,世界各地的开发者把源代码通过 diff 的方式发给 Linus,然后由 Linus