东方耀AI技术分享

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 4268|回复: 3
打印 上一主题 下一主题

[课堂笔记] 安装海思sdk之编译uboot和Kernel

[复制链接]

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14439
QQ
跳转到指定楼层
楼主
发表于 2020-7-7 11:05:01 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
3、编译uboot和Kernel


1)安装SDK包

拷贝Hi3516C V500R001C02SPC011\01.software\board\Hi3516CV500_SDK_V2.0.1.1.tgz到ubuntu20.04系统中,运行./sdk.unpack(请用 root 或 sudo 权限执行)将会展开 SDK 包打包压缩存放的内容。

解压Hi3516CV500_SDK_V2.0.1.1.tgz

#  sudo tar -zxvf Hi3516CV500_SDK_V2.0.1.1.tgz -C ./

进入解压的SDK目录,然后运行./sdk.unpack命令

# sudo ./sdk.unpack

  1. jingyun@jingyun-Ubuntu:~/dfy_softwares2/Hi3516CV500_SDK_V2.0.1.1$ sudo ./sdk.unpack
  2. Unpacking SDK
  3. WARN: Be sure you have installed the cross-compiler. if not, install it first!
  4. WARN: ALL THE SOUCE FILES WILL BE OVERWRITED, FILES YOU MOTIFIED WILL BE LOST !!!

  5. SDK_CHIP =hi3516cv500
  6. unpacking drv
  7. mkdir: created directory 'drv/'
  8. run_command_progress_float: 'tar -xvzf package/drv.tgz'
  9. [100%]##################################################|
  10. unpacking osal
  11. mkdir: created directory 'osal/'
  12. run_command_progress_float: 'tar -xvzf package/osal.tgz'
  13. [100%]##################################################|
  14. unpacking osdrv
  15. mkdir: created directory 'osdrv/'
  16. run_command_progress_float: 'tar -xvzf package/osdrv.tgz'
  17. [100%]##################################################|
  18. mkdir: created directory 'smp'
  19. mkdir: created directory 'smp/a7_linux/'
  20. unpacking mpp_smp_linux.tgz
  21. run_command_progress_float: 'tar -xvzf package/mpp_smp_linux.tgz -C smp/a7_linux'
  22. [100%]##################################################|
  23. /home/jingyun/dfy_softwares2/Hi3516CV500_SDK_V2.0.1.1/smp/a7_linux /home/jingyun/dfy_softwares2/Hi3516CV500_SDK_V2.0.1.1
  24. /home/jingyun/dfy_softwares2/Hi3516CV500_SDK_V2.0.1.1
复制代码




成功执行./sdk.unpack后,会的到一个sdk包:Hi3516CV500_SDK_V2.0.1.1


如果提示source:not found,执行dpkg-reconfigure dash(执行时需要root权限)

#sudo dpkg-reconfigure dash

在出现的界面中选择no,再运行ls -l /bin/sh后显示/bin/sh/->bash

目标是编译sdk包Hi3516CV500_SDK_V2.0.1.1\osdrv根目录


2)将内核的补丁v4.9.37打到linux 的内核kernel上

从linux开源社区下载v4.9.37版本的内核:

(1) 进入网站:http://www.kernel.org

(2)选择HTTP协议资源的https://www.kernel.org/pub/选项,进入子页面

(3)选择linux/菜单项,进入子页面

(4)选择kernel/菜单项,进入子页面

(5)选择v4.x/菜单项,进入子页面

(6)下载linux-4.9.37.tar.gz (或者linux-4.9.37.tar.xz)到osdrv/opensource/kernel目录下

cp linux-4.9.37.tar.gz /home/jingyun/dfy_softwares2/Hi3516CV500_SDK_V2.0.1.1/osdrv/opensource/kernel

(7)在linux服务器中进入 osdrv 的根目录,执行如下命令:

# cd opensource/kernel
# tar -zxf linux-4.9.37.tar.gz
# mv linux-4.9.37 linux-4.9.y
# cd linux-4.9.y
# patch -p1 < ../linux-4.9.37.patch
# cd ../
# tar -czf linux-4.9.y.tgz linux-4.9.y
# cd ../../

完成补丁安装。



3)编译osdrv

注意:由于Makefile中文件系统编译依赖组件较多,不能保证单独编译的文件系统可用,建议采用make all编译。

进入Hi3516CV500_SDK_V2.0.1.1\osdv根目录


(1)清除整个osdrv目录的编译文件:

# make OSDRV_CROSS=arm-himix200-linux clean

(2)彻底清除整个osdrv目录的编译文件,除清除编译文件外,还删除已编译好的镜像:

# make OSDRV_CROSS=arm-himix200-linux distclean

(3)编译整个osdrv(我自己这样操作报错了 /bin/sh: arm-himix200-linux-gcc:未找到命令 )


解决:终端可以找得到命令 但是Makefile找不到命令/bin/sh: arm-himix200-linux-gcc:未找到命令  



分别单独编译即可!看后面的操作!


# sudo make all



fseterr.c: In function 'fseterr':
fseterr.c:78:3: error: #error "Please port gnulib fseterr.c to your platform! Look at the definitions of ferror and clearerr on your system, then report this to bug-gnulib."
  #error "Please port gnulib fseterr.c to your platform! Look at the definitions of ferror and clearerr on your system, then report this to bug-gnulib."
   ^~~~~
make[5]: *** [Makefile:1696: fseterr.o] Error 1


解决:(这样不行的  后面有解决方案!)
sudo apt-get update
sudo apt-get install bison






单独编译kernel(以hi3516dv300举例):
    注意:单独编译内核之前请先阅读osdrv/opensource/kernel下的readme_cn.txt说明。

    待进入内核源代码目录(dfy_softwares2/Hi3516CV500_SDK_V2.0.1.1/osdrv/opensource/kernel/linux-4.9.y)后,
    执行以下操作
    cp arch/arm/configs/hi3516dv300_smp_defconfig  .config
    (emmc启动时执行如下操作:cp arch/arm/configs/hi3516dv300_emmc_smp_defconfig  .config)

    make ARCH=arm CROSS_COMPILE=arm-himix200-linux- menuconfig   加载.config配置后退出
    make ARCH=arm CROSS_COMPILE=arm-himix200-linux- uImage
   
   
Image Name:   Linux-4.9.37
Created:      Tue Jul  7 14:30:56 2020
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    3624762 Bytes = 3539.81 KiB = 3.46 MiB
Load Address: 80008000
Entry Point:  80008000
  Kernel: arch/arm/boot/uImage is ready




单独编译uboot(以hi3516dv300举例)
   (注意:发布包默认按照DMEB板的配置发布,如果客户单板和DEMB板不一致,需要根据客户自己的单板环境修改uboot表格才能使用,否则可能导致uboot无法启动或者其他问题。)


uboot源代码目录下手动解压(提取到此处) u-boot-2016.11.tgz  secureboot_release.tgz


    待进入uboot源代码目录(dfy_softwares2/Hi3516CV500_SDK_V2.0.1.1/osdrv/opensource/uboot/u-boot-2016.11)后,
    执行以下操作
    make ARCH=arm CROSS_COMPILE=arm-himix200-linux- hi3516dv300_defconfig
    (emmc启动时执行如下操作:make ARCH=arm CROSS_COMPILE=arm-himix200-linux- hi3516dv300_emmc_defconfig)

    make ARCH=arm CROSS_COMPILE=arm-himix200-linux- -j 20

    make -C ../../../tools/pc/hi_gzip    执行到这一步报错了  下面的图所示


解决方法:将fseterr.c:78和fseeko.c:110注释起来即可(tools/pc/hi_gzip/gzip-1.8/lib目录下)!
    但是再次执行上面的make命令后会重新解压tar -xf gzip-1.8.tgz
    所以我的思路是:不改变Makefile文件  将压缩包修改里面的再打包替换即可  tar -cf gzip-1.8.tgz gzip-1.8


   我改好的 放附件里了!

   
    再次执行 make -C ../../../tools/pc/hi_gzip   没有报错了!


cp ../../../tools/pc/hi_gzip/bin/gzip arch/arm/cpu/armv7/hi3516dv300/hw_compressed/ -rf






Windowns下进入到osdrv/tools/pc/uboot_tools/目录下打开对应单板的Excel文件(启用宏),在main标签中点击"Generate reg bin file"按钮,生成reg_info.bin即为对应平台的表格文件。
   
    从osdrv/tools/pc/uboot_tools目录拷贝reg_info.bin到uboot源代码目录,重命名为.reg
    sudo cp ../../../tools/pc/uboot_tools/reg_info.bin .reg

    make ARCH=arm CROSS_COMPILE=arm-himix200-linux- u-boot-z.bin   执行这一步 成功啦  后面有图示
   
    opensource/uboot/u-boot-2016.11下生成的u-boot-hi3516dv300.bin即为可用的u-boot镜像




   

erro2.png (121.98 KB, 下载次数: 106)

erro2.png

fseterr.c.png (128.64 KB, 下载次数: 106)

fseterr.c.png

fseeko.c.png (101.71 KB, 下载次数: 111)

fseeko.c.png

erro2222.png (74.58 KB, 下载次数: 112)

erro2222.png

success.png (116.58 KB, 下载次数: 107)

success.png

gzip-1.8.tgz

4.73 MB, 阅读权限: 10, 下载次数: 0

让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14439
QQ
沙发
 楼主| 发表于 2020-7-7 13:48:26 | 只看该作者
注意:由于Makefile中文件系统编译依赖组件较多,不能保证单独编译的文件系统可用,建议采用make all编译;
        但可单独编译uboot,kernel;

    可以传如下参数:
    a, BOOT_MEDIA:spi(default) or emmc
    b, CHIP:hi3516dv300(default) 、 hi3516av300 or hi3516cv500
    c, 如果客户想要更换可以使用TARGET_XLSM=*.xlsm来指定所需要的u-boot表格文件
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14439
QQ
板凳
 楼主| 发表于 2020-7-7 14:55:51 | 只看该作者
单独编译uboot(以hi3516dv300举例):
   (注意:发布包默认按照DMEB板的配置发布,如果客户单板和DEMB板不一致,需要根据客户自己的单板环境修改uboot表格才能使用,否则可能导致uboot无法启动或者其他问题。)
    待进入uboot源代码目录(dfy_softwares2/Hi3516CV500_SDK_V2.0.1.1/osdrv/opensource/uboot/u-boot-2016.11)后,
    执行以下操作
        make ARCH=arm CROSS_COMPILE=arm-himix200-linux- hi3516dv300_defconfig
        (emmc启动时执行如下操作:make ARCH=arm CROSS_COMPILE=arm-himix200-linux- hi3516dv300_emmc_defconfig)

        make ARCH=arm CROSS_COMPILE=arm-himix200-linux- -j 20

    make -C ../../../tools/pc/hi_gzip    执行到这一步报错了

    cp ../../../tools/pc/hi_gzip/bin/gzip arch/arm/cpu/armv7/hi3516dv300/hw_compressed/ -rf
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14439
QQ
地板
 楼主| 发表于 2020-7-8 09:59:54 | 只看该作者
编译成功可以得到:

(1)uImage

路径:Hi3516CV500_SDK_V2.0.1.1/osdrv/opensource/kernel/linux-4.9.y/arch/arm/boot/uImage  大概3.6M

(2)u-boot-hi3516dv300.bin

路径:Hi3516CV500_SDK_V2.0.1.1/osdrv/opensource/uboot/u-boot-2016.11/u-boot-hi3516dv300.bin  大概305.3K
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|人工智能工程师的摇篮 ( 湘ICP备2020019608号-1 )

GMT+8, 2024-5-18 15:11 , Processed in 0.190059 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表