Hi3531 SDK
- 格式:docx
- 大小:25.77 KB
- 文档页数:7
海思SDK学习:001-HI_SDK的安装背景保密。
不管怎么样接触到了海思SDK的开发,作为⼀项⽐较常见的技术,我们开展有关地学习。
host平台 :Ubuntu 16.04arm平台 : 3531darm-gcc :4.9.4概况海思给出的官⽅资料有:⽂件名解释Hi3531D_Vxxxxxx.rar包含了有关的SDKReleaseDoc.rar官⽅发布的中英⽂⽂档arm-hisiv500-linux.tgz开发⽤的⼯具链安装以下的操作在 Linux主机上进⾏。
(本⼈这⾥是Ubuntu)Hi3531D_Vxxxxxx.rar:解压SDK包、并展开包的内容Hi3531D SDK包位置:在"Hi3531D Vxxxxxx/01.software/"⽬录下,有 Hi3531D_SDK_Vx.x.x.x.tgz 的⽂件,该⽂件就是Hi3531D的软件开发包。
tar -xf Hi*SDK*.tgzcd Hi*SDK*# 如果需要拷贝SDK包,请先运⾏source sdk.cleanup,收起SDK包的内容,拷贝到新的⽬录后再展开。
source sdk.unpackSDK⽬录介绍# schips @ ubuntu in Hi3531D_SDK [10:54:44]$ tree -L 2.├── drv #平台驱动│├── cipher│├── hisi-irda│├── rtc│├── sys_config│└── wtdg├── mpp # 存放媒体处理平台的⽬录│├── component # 组件源代码│├── extdrv # 板级外围驱动源代码│├── include # 对外头⽂件│├── ko # 内核模块│├── lib # release版本库以及⾳频库│├── linux.param│├── Makefile.param│├── sample # 样例源代码│└── tools # 媒体处理相关⼯具├── osal│├── include│└── source├── osdrv # 存放操作系统及相关驱动的⽬录│├── drv # drv源代码│├── Makefile # osdrv Makefile│├── opensource # 包含了 uboot、kernel、busybox等源码│├── pub # 编译好的镜像、⼯具、drv驱动等(空的)│├── readme_cn.txt│├── readme_en.txt│├── rootfs_scripts # rootfs源代码│└── tools # linux⼯具源代码├── package # 存放SDK各种压缩包的⽬录│├── drv.tgz # 平台驱动压缩包│├── image_uclibc # 可供FLASH烧写的映像⽂件,如内核、根⽂件系统│├── mpp.tgz # 媒体处理平台软件压缩包│├── osal.tgz│├── osdrv.tgz # linux内核/uboot/rootfs/tools源码压缩包│└── rootfs_uclibc.tgz├── scripts # 存放shell脚本的⽬录├── sdk.cleanup # SDK清理脚本└── sdk.unpack # SDK展开脚本arm-hisiv500-linux.tgz:安装交叉编译器到HOST解压与⾃动安装tar -xf arm-hisiv500-linux.tgzcd arm-hisiv500-linux# arm-hisiv500-linux.install 脚本中的 TOP_DIR 为安装⼯具链的位置,可以修改,⼀般默认即可chmod +x arm-hisiv500-linux.installsudo ./arm-hisiv500-linux.install配置⼯具链到 PATH中# 默认情况下的⼯具链配置路径export PATH=$PATH:/opt/hisi-linux/x86-arm/arm-hisiv500-linux/target/bin测试$ arm-hisiv500-linux-gcc --versionarm-hisiv500-linux-gcc (Hisilicon_v500_20170922) 4.9.4 20150629 (prerelease)Copyright (C) 2015 Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.如果出现:arm-hisiv500-linux-gcc: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory这是因为gcc太⽼的问题:解决办法:sudo apt-get install lib32z1 lib32ncurses5 lib32stdc++6 -y编译osdrvosdrv ,具体参见osdrv⽬录下readme;这⾥给出⾃⽤的编译kernel 有关的脚本配置:make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- menuconfig清除:make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- clean编译:sudo PATH=$PATH:/opt/hisi-linux/x86-arm/arm-hisiv500-linux/target/bin make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- uImage -j4。
1 Hi3535和Hi3531的差异说明Hi3535和Hi3531都是针对多路高清和多路D1产品应用开发专业Soc芯片,Hi3535是一款专业的NVR芯片,而Hi3531主要针对DVR应用,同时兼顾NVR应用。
Hi3535和Hi3531的开发包结构基本一致,这里针对主要规格、SDK组件、API等关键差异进行描述,以确保使用过Hi3531芯片的客户可以快速开发产品。
1.1 规格差异点Hi3535和Hi3531规格的差异点如表1-1所示。
表1-1Hi3535和Hi3531在规格方面的差异点差异点Hi3535 Hi3531处理器 ARMCortexA9双核@Max. 1GHz ARM Cortex A9双核@Max. 930MHz视频输入不支持支持8个VI设备支持16路VI主通道,偶数主通道有次通道视频输出支持3个VO设备(2个高清设备+1个标清设备)支持8个VO设备(2个高清设备+6个标清设备)HDMI 1.4+VGA+CVBS多视频输出,其中HDMI与VGA可同源输出HDMI 1.3+VGA/YPbPr +CVBSx2多视频输出,其中HDMI与VGA可同源输出高清设备支持VGA/HDMI/BT.1120同源输出,最大支持1080P@60fps标清设备支持CVBS输出8xBT.656@27MHz输出口HDMI可支持1080P@60fps VGA可支持2560x1600@60fps3个图形层+1个鼠标层,其中图形层格式支持ARGB1555、ARGB4444、ARGB8888可配置,最大分辨率为1920 x 1200,鼠标层最大分辨率为128 x 128 5个图形层+2个鼠标层,格式为RGB1555、RGB8888可配置,最大分辨率为,其中图形层最大分辨率为2560x1600,鼠标层最大分辨率为128x128差异点Hi3535 Hi3531视频前处理去隔行,3D去噪,动态对比度调节,锐化去隔行,3D去噪,锐化4个图像COVER8个图像OSD,支持通道开关不支持8个编码OSD,支持自动反色8个编码OSD,支持自动反色视频编码协议H.264 Baseline Profile Level4.2 H.264 Baseline Profile Level5.0 H.264 Main Profile Level4.2 H.264 Main Profile Level5.0 H.264 High Profile Level4.2 H.264 High profile Level5.0 JPEG Baseline JPEG Baseline视频解码协议H.264 Baseline Profile Level 5.0 H.264 Baseline Profile Level 5.0H.264 Main Profile Level5.0 H.264 Main Profile Level5.0H.264 High profile Level5.0 H.264 High profile Level5.0MPEG4 SP L0~L3 MPEG4 SP L0~L3MPEG4 ASP L0~L5/MPEG4短头MPEG4 ASP L0~L5/MPEG4短头不支持 MPEG2MP/HL、M L、LLMPEG2 SP/MLMPEG1AVS Jizhun Level 6.0MJPEG/JPEG Baseline MJPEG/JPEG Baseline差异点Hi3535 Hi3531视频编解码性能如涉及标清分辨率,按NTSC计算z5x1080P@30fps解码+1x1080P@30fps编码+1080P@8fps JPEG抓拍z9x720P@30fps解码+1x1080P@30fps编码+720P@16fps JPEG抓拍z24xD1@30fps解码+1x1080P@30fps编码+D1@32fps JPEG抓拍z4x720p@30fps JPEG解码如涉及标清分辨率,按NTSC计算z16D1@30fps+16CIF@30fps编码+16D1@30fps解码+JPEG抓拍D1@16fpsz4x1080P@30fps+4x(960x540)@15fps编码+1x1080P@30fps解码+JPEG抓拍1080P@4fpsz4x1080P@15fps+4x(960x540)@15fps编码+4x1080P@15fps解码+JPEG抓拍1080P@4fpsz4x720P@30fps+4xQVGA@30fps编码+4x720P@30fps解码+ JPEG抓拍720P@4fpsz8x720P@15fps+8xQVGA@15fps编码+8x720P@15fps解码+ JPEG抓拍720P@8fpsz24D1@30fps解码z16x960H@30fps解码z8x720P@30fps解码z6x1080P@30fps解码音频z1路模拟输入输出z1个标准I2S输入,和模拟输入互斥z2个标准I2S输出,1个可以和模拟输出同源,另1个支持HDMI I2S输出5个标准I2S接口,其中3个仅支持输入,1个支持输入输出,1个支持HDMI I2S输出软件实现ADPCM、G.711、G.726音频编码硬件实现ADPCM、G.711、G.726音频编码运动侦测与Hi3531相同提供SAD/MV提供遮挡检测功能智能引擎与Hi3531相同集成智能分析加速引擎,支持智能运动侦测、周界防范、人脸检测、视频诊断等多种智能分析应用DDR接口1个32bit DDR3 SDRAM接口2个32bit DDR2/3 SDRAM接口最高频率800MHz(1.6Gbps)最高频率620MHz(1.24Gbps)最大容量支持2GB 每个接口最大容量支持1GBFlash与Hi3531相同SPI Nor Flash和NandFlash网络与Hi3531相同2个GMAC接口,配有TOE加速PCIe 1个PCIe 2.0接口2个PCIe 1.1接口差异点Hi3535 Hi3531SATA 3个SATA 3.0接口(其中一个SATA接口和PCIe复用)2个SATA 2.0接口支持FBS 不支持启动模式与Hi3531相同 bootrom启动SPI nor flash启动Nand Flash启动DDR启动1.2 SDK包差异点Hi3535和与Hi331在SDK包方面的主要差异如表1-2所示。
Hi3536 SDK 安装以及升级使用说明序1、先明确文中的几个概念。
主片: 多片级联应用中,指PCI主片。
从片: 多片级联应用中,指PCI从片。
主arm:指双CPU中的A17。
从arm:指双CPU中的A7。
第一章 安装SDK1、Hi3536 SDK包位置在"Hi3536_V100R001***/01.software/board"目录下,您可以看到一个 Hi3536_SDK_Vx.x.x.x.tgz 的文件,该文件就是Hi3536的软件开发包。
2、解压缩SDK包在linux服务器上(或者一台装有linux的PC上,主流的linux发行版本均可以),使用命令:tar -zxfHi3536_SDK_Vx.x.x.x.tgz ,解压缩该文件,可以得到一个Hi3536_SDK_Vx.x.x.x目录。
3、展开SDK包内容返回Hi3536_SDK_Vx.x.x.x目录,运行./sdk.unpack(请用root或sudo权限执行)将会展开SDK包打包压缩存放的内容,请按照提示完成操作。
如果您需要通过WINDOWS操作系统中转拷贝SDK包,请先运行./sdk.cleanup,收起SDK包的内容,拷贝到新的目录后再展开。
4、在linux服务器上安装交叉编译器1)安装uclibc交叉编译器(注意,需要有sudo权限或者root权限):进入Hi3536_SDK_Vx.x.x.x/osdrv/opensource/toolchain/arm-hisiv300-linux目录,运行chmod +x cross.v300.install,然后运行./cross.v300.install即可。
2) 安装glibc交叉编译器:进入Hi3536_SDK_Vx.x.x.x/osdrv/opensource/toolchain/arm-hisiv400-linux目录,运行chmod +x cross.v400.install,然后运行./cross.v400.install即可。
opencv2.4.9下载不用说了。
Ubuntu12.04虚拟机安装的+arm-hisiv200-linux交叉编译器+cmake-gui(2.8.7)参考:/luotuo44/article/details/8958990/s/blog_92942dba0101d1wj.html一、建立编译环境配置进入opencv-2.4.9目录建立release-hisiv200目录存放编译过程中文件。
#cd opencv-2.4.9#mkdir release-hisiv200#cd release-hisiv200打开cmake-gui,进行博客中的配置:#cmake-gui在configure时选择CMAKE_SYSTEM_NAME:arm-hisiv200-linuxC:选择/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/bin/arm-hisiv200-linux-gccC++:选择/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/bin/arm-hisiv200-linux-g++ 修改安装目录:CMAKE_INSTALL_PREFIX:/opt/2.4.9-arm-hisiv200进行编译:make二、出现问题:1、/usr/lib/libImath.so: could not read symbols: File in wrong formatcollect2: ld returned 1 exit statusmake[2]: *** [lib/libopencv_highgui.so] 错误1make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] 错误2make: *** [all] 错误2主要opencv编译OPENEXR时要用到libImath.so,所有我就把那个取消了,然后编译就没出现过这个问题。
hi3531d编码工作原理
HI3531D编码器的工作原理主要是通过执行编码操作,将原始视频数据压
缩成三种不同类型的视频帧:I帧、P帧和B帧。
I帧是关键帧,是完整编码的帧,可以理解成一张完整画面,不依赖其他帧。
P帧则参考前面的I帧或P帧,通过与前面的I帧或P帧进行比较,记录不
同的部分,从而形成完整的画面。
单独的P帧无法形成画面。
B帧则同时参考前面的I帧或P帧以及后面的P帧。
此外,编码过程中还采用两种核心算法:帧内压缩和帧间压缩。
帧内压缩仅考虑本帧数据,不考虑相邻帧之间的冗余信息,与静态图像压缩类似。
采用有损压缩算法的帧内压缩,因为是对一个完整的图像进行编码,所以可以独立地解码、显示。
但由于其压缩效果一般,与JPEG压缩效果类似,所以达不到很高的压缩比。
而帧间压缩则考虑相邻帧之间的冗余信息,通过比较和计算相邻帧之间的数据,达到压缩效果。
这种压缩方式是无损的。
以上内容仅供参考,如需了解更多信息,建议咨询专业人士或查阅相关技术文档。
杭州某大学高清视频监控系统解决方案工程概述:杭州大学饮食管理服务公司承担着全校几万人的日常就餐服务和管理工作,下辖11个餐饮服务中心。
为确保食品安全,实时监控进出后厨的人员,以便日后有记录可查,饮食公司拟在所辖餐饮单位的后厨操作间、库房等重要出入口安装红外高清视频监控系统,利用现有的校园网、视频监控系统管理,与学校视频监控管理平台互联互通且无缝兼容,实时显示监控所有现场进出图像、任意切换放大前端图像,统一管理,分级授权各餐饮单位。
系统配置:需与学校视频监控管理平台互联互通且无缝兼容。
摄像机前端:系统前端视频采集系统采用当今主流的带红外夜视功能的数字高清摄像机,各出入口的摄像机要求能清晰的分辨出入人员的面部特征及依着特征。
所有摄像机通过网线连接于交换机。
后端存储:存储使用数字网络高清硬盘录像机,与摄像机连接于同台交换机,通过不同数量的摄像机,配置不同容量的硬盘,以满足录像时间的需要。
显示系统:采用一台24寸液晶显示器,接入高清硬盘录像机,通过鼠标进行系列操作。
远程访问:通过连接到校园网,实现校园内网络实时访问和查阅录像,并可设置不同的权限。
设备选型:1、数字高清红外摄像机:功能及特性:1/3英寸WDR CMOS Sensor,捕捉运动图象无锯齿;最高像素可达4M,最高分辨率可达1920×1080,可输出Full HD 1080P实时图像;优越的低照性能,低照度下彩转黑;红外距离30米支持ICR滤光片切换功能,在低照度的环境下,降低噪点的同时也能保证移动物体的边缘清晰不拖尾,实现昼夜监控;采用先进的3D动态智能降噪功能;动态范围大于100db;领先业界编码算法,提供广播级图像质量;支持H.264High Profile视频编码,三码流适应更多监控场景,高压缩比,高视频质量;高信噪比,图像画面清晰、干净通透;支持自动光圈,自动电子快门功能,满足不同监控场景;内置咪头,网络双向语音对讲;支持1路模拟视频环出,方便安装调节;支持SD2.0标准Micro SDHC存储卡;支持4个区域隐私遮挡设置;支持运动侦测、遮挡侦测及报警录像、图片抓拍;内嵌Web Server,支持IE浏览视频、参数配置、升级、用户权限管理摄像机图像传感器1/3" WDR 4M CMOS有效像素1920(H)×1080(V)最低照度彩色0.1Lux@(F1.2 AGC ON);黑白0.01Lux@(F1.2 AGC ON)动态范围大于100db信噪比≥50db(AGC OFF)3A控制自动控制白平衡AWB/自动增益AGC/自动曝光AE电子快门1/25—1/10000秒日夜功能支持IR-CUT机械切换红外距离≤30米音视频编码视频编码H.264 High Profile编码主码流:1920*1080,1-30帧/秒;1080*720, 1-30帧/秒图像分辨率次码流:1080*720 1-30帧/秒;704*576, 1-30帧/秒; 352*288 1-30帧/秒;第三码流:352*288 1-30帧/秒; 176×144 1-30帧/秒;视频压缩码率32Kbps~16Mbps连续可调,支持CBR/VBR字幕叠加支持通道名、日期时间叠加位置可调音频编码G.711接口模拟视频输出1路CVBS视频BNC接口输出接口:CS光学镜头镜头:可选,标配8mm自动光圈DC驱动音频/对讲输入1路麦克风输入(支持线性输入),3.5mm音频接口;音频输出1路3.5mm音频接口存储接口支持SD2.0标准Micro SDHC卡,最大容量32G(可选)复位按键用于恢复出厂设置网络接口10/100M网络自适应,RJ45适配器I/O输入输出2路开关量输入/1路开关量输出(120VAC 2A/24VDC 2A),1路RS485数据传输及存储数据存储视频、图片文件存储机制手动、自动(循环、定时、报警开关量、移动侦测、遮挡侦测)报警数据传输E-mail电子邮件、浏览器、管理软件TCP/IP、UDP、RTP、RTSP、RTCP、HTTP、DNS、DDNS、DHCP、NTP、PPPOE、协议支持SMTP、UPNP接入协议支持ONVIF无线协议支持(-W)802.11b/g/n、支持WEP、WPA、WPA2加密协议客户端浏览支持IE6.0及以上(设备内嵌Web Server),支持8用户并发访问(MAX)常规参数供电电源DC12V功率不含红外灯<5W;红外灯开启<13W整机尺寸257 (长) * 100(宽) *93(高)mm重量 1.24kg工作环境温度-10℃- +55℃,湿度0% - 90%尺寸(毫米)重量(克)Φ145(D)X96(H)mm(不含镜头) 360g2、数字高清网络硬盘录像机产品主要功能:支持网络校时,可多个时区选择;支持最大解码能力16路720P,可同时录像及预览;支持HDMI/VGA高清输出;支持10M/100M/1000M自适应网络接口;支持H.264(baseline) realtime 编解码功能;支持图像预览回放局部电子放大;支持通道画面轮巡;管理员可以创建多个操作用户并设定其权限支持四种录像方式:手动,定时,报警,移动;支持预录和延时录像;支持双向语音对讲,支持有源和无源麦克风;支持精确时间回放,支持8路全高清回放,回放带播放器可隐藏,可显示;每个通道支持4块区域遮挡;支持域名解析,拨号,同时支持掉线自动重传;通过远程客户端设置参数,升级,预览,点播,备份录像机中的录像数据;具备WEBSERVER访问功能,可对NVR进行远程操作。
Hi3531 SDK 使用笔记(1)新接触了HI3531这款芯片,厂家提供了SDK,做点开发笔记,供自己查询。
这也算是我的Linux学习历程。
开发环境:软件:Windows + FC14硬件:ATOM + HI3531———————以下为厂家提供教程———————1、Hi3531 SDK包位置在"Hi3531_V100R001***/01.software/board"目录下,您可以看到一个Hi3531_SDK_Vx.x.x.x.tgz 的文件,该文件就是Hi3531的软件开发包。
2、解压缩SDK包在linux服务器上(或者一台装有linux的PC上,主流的linux发行版本均可以),使用命令:tar -zxf Hi3531_SDK_Vx.x.x.x.tgz ,解压缩该文件,可以得到一个Hi3531_SDK_Vx.x.x.x目录。
3、展开SDK包内容返回Hi3531_SDK_Vx.x.x.x目录,运行./sdk.unpack(请用root或sudo权限执行)将会展开SDK包打包压缩存放的内容,请按照提示完成操作。
如果您需要通过WINDOWS操作系统中转拷贝SDK包,请先运行./sdk.cleanup,收起SDK包的内容,拷贝到新的目录后再展开。
4、在linux服务器上安装交叉编译器1)安装uclibc交叉编译器(注意,需要有sudo权限或者root权限):进入Hi3531_SDK_Vx.x.x.x/osdrv/toolchain/arm-hisiv100-linux目录,运行chmod +x cross.install,然后运行./cross.install即可。
2) 安装glibc交叉编译器(注意,需要有sudo权限或者root权限):进入Hi3531_SDK_Vx.x.x.x/osdrv/toolchain/arm-hisiv200-linux目录,运行chmod +x cross.install,然后运行./cross.install即可。
3) 执行source /etc/profile,安装交叉编译器的脚本配置的环境变量就可以生效了,或者请重新登陆也可。
5、编译osdrv参见osdrv目录下readme———————以上为厂家提供教程———————几点说明:1、uclibc是面向嵌入式Linux系统的小型的C标准库,glibc是Linux的标准运行库。
使用某一工具链编译后,如果需要更换工具链,请先将原工具链编译文件清除,然后再更换工具链编译。
开始我发现使用arm-hisiv100-linux编译内核时,会提示找不到该命令,换到arm-hisiv200-linux可以。
估计就是上述问题吧。
2、source命令即执行命令,和“./”(个人理解)source命令用法:source FileName作用:在当前bash环境下读取并执行FileName中的命令。
注:该命令通常用命令“.”来替代。
如:source .bash_rc 与 . .bash_rc 是等效的。
注意:source命令与shell scripts的区别是,source在当前bash环境下执行命令,而scripts是启动一个子shell来执行命令。
这样如果把设置环境变量(或alias等等)的命令写进scripts中,就只会影响子shell,无法改变当前的BASH,所以通过文件(命令列)设置环境变量时,要用source 命令。
3、Linux下也有环境变量,如下:常见的配置文件包括:(1-1)/etc/profile:对所有用户生效;此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行;并从/etc/profile.d目录的配置文件中搜集shell的设置。
例如:编辑/etc/profile文件,添加CLASSPATH变量: # vi /etc/profile添加一行:export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib修改后需要执行重新登录才能生效,也可以执行命令source /etc/profile来生效(1-2)/etc/bashrc:对所有用户生效;为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取编辑方法如上,不再赘述环境变量的查看:(1)使用echo命令查看单个环境变量。
例如:echo $PATH(2)使用env查看所有环境变量。
例如:env(3)使用set查看所有本地定义的环境变量。
例如:set另外,unset可以删除指定的环境变量。
常用的环境变量:PATH 决定了shell将到哪些目录中寻找命令或程序HOME 当前用户主目录HISTSIZE 历史记录数LOGNAME 当前用户的登录名HOSTNAME 指主机的名称SHELL 当前用户Shell类型LANGUGE 语言相关的环境变量,多语言可以修改此环境变量MAIL 当前用户的邮件存放目录PS1 基本提示符,对于root用户是#,对于普通用户是$好,继续。
这里的重点肯定在第五步。
下面详细说说。
osdrv目录结构说明:osdrv├─Makefile ------------------------------ osdrv目录编译脚本├─busybox ------------------------------- 存放busybox源代码的目录├─tools --------------------------------- 存放各种工具的目录│├─board_tools ----------------------- 各种单板上使用工具││├─reg-tools-1.0.0 --------------- 寄存器读写工具││├─mtd-utils --------------------- flash裸读写工具││├─udev-100 ---------------------- udev工具集││├─g db --------------------------- gdb工具││├─parted ------------------------ 大容量硬盘分区工具││└─e2fsprogs --------------------- mkfs工具集│└─pc_tools -------------------------- 各种pc上使用工具│├─mkfs.cramfs ------------------- cramfs文件系统制作工具│├─mkfs.jffs2 -------------------- jffs2文件系统制作工具│├─mkimage ----------------------- uImage制作工具│├─mkyaffs2image301 -------------- yaffs2文件系统制作工具│├─nand_production--------------- nand flash烧写文件制作工具│└─uboot_tools ------- uboot镜像制作工具、xls文件及ddr初始化脚本、bootrom工具├─toolchain ----------------------------- 存放工具链的目录│├─arm-hisiv100nptl-linux ---------------- hisiv100nptl交叉工具链│└─arm-hisiv200-linux ---------------- hisiv200交叉工具链├─pub ----------------------------------- 存放各种镜像的目录│├─image_glibc ----------------------- 基于hisiv100nptl工具链编译,可供FLASH烧写的映像文件,包括uboot、内核、文件系统│├─image_uclibc ---------------------- 基于hisiv200工具链编译,可供FLASH 烧写的映像文件,包括uboot、内核、文件系统│├─bin ------------------------------- 各种未放入根文件系统的工具││├─pc ---------------------------- 在pc上执行的工具││├─board_glibc ------------------- 基于hisiv100nptl工具链编译,在单板上执行的工具││└─board_uclibc ------------------ 基于hisiv200工具链编译,在单板上执行的工具│├─rootfs_uclibc.tgz ----------------- 基于hisiv100nptl工具链编译的根文件系统│└─rootfs_glibc.tgz ------------------ 基于hisiv200工具链编译的根文件系统├─drv ----------------------------------- 存放外设驱动的目录│└─pcie_mcc -------------------------- pcie消息通讯层驱动├─rootfs_scripts ------------------------ 存放根文件系统制作脚本的目录├─uboot --------------------------------- 存放uboot源代码的目录└─kernel -------------------------------- 存放kernel源代码的目录第一步,开始编译内核。
cp arch/arm/configs/godnet_defconfig .configmake ARCH=arm CROSS_COMPILE=arm-hisiv200-linux- menuconfigmake ARCH=arm CROSS_COMPILE=arm-hisiv200-linux- uImage即执行了make menuconfig 和 make uImage。
执行make menuconfig 后会显示一个菜单,大概是对Linux内核的配置,不过对于刚接触Linux的我来说,先略过,直接Quit。
执行make uImage会编译出Linux内核,先说一下几种linux内核文件的区别 (网上一把,随便抓一个过来)vmlinux 编译出来的最原始的内核文件,未压缩。
zImage 是vmlinux经过gzip压缩后的文件。
bzImage bz表示“big zImage”,不是用bzip2压缩的。
两者的不同之处在于,zImage解压缩内核到低端内存(第一个640K),bzImage解压缩内核到高端内存(1M以上)。