海思系列:3559av编译osdrv

sdk版本

SDk: Hi3559AV100R001C02SPC040
linux交叉编译工具:aarch64-himix210-linux.tgz
liteos编译工具: gcc-arm-none-eabi-9-2019-q4.tgz

sdk安装

上述三个参考文档和脚本介绍,均安装在同一个目录下

root@ubuntu:/xxx/00_sdk# tree -L 2
.
├── cross_compile_tool
│   ├── aarch64-himix210-linux
│   └── gcc-arm-none-eabi-9-2019-q4-major
└── Hi3559AV100_SDK_V2.0.4.0
    ├── interdrv
    ├── mpp
    ├── open_source
    ├── osal
    ├── osdrv
    ├── package
    ├── platform
    ├── scripts
    ├── sdk.cleanup
    ├── sdk.unpack
    └── vendor

13 directories, 2 files
root@ubuntu:/sdk/02_sd3403/04_355av100/00_sdk#

sdk编译

修改osdrv下的Makefile的属性,可编辑可保存,同时备份下。
修改 BOOT_MEDIA为emmc,保存后在该目录下执行 make all
静待编译,大概个把小时,看电脑配置
编译出错问题:
/sdk/02_sd3403/04_355av100/00_sdk/Hi3559AV100_SDK_V2.0.4.0/platform/liteos/liteos_user /sdk/02_sd3403/04_355av100/00_sdk/Hi3559AV100_SDK_V2.0.4.0/osdrv
make[3]: warning: jobserver unavailable: using -j1.  Add '+' to parent make rule.
In file included from zconf.tab.c:2122:
confdata.c: In function ‘conf_write’:
confdata.c:326:22: error: ‘.sys_config.’ directive writing 12 bytes into a region of size between 1 and 4096 [-Werror=format-overflow=]
 326 |     sprintf(newname, "%s.sys_config.%d", dirname, getpid());
        |                      ^~~~~~~~~~~~~~~~~~
 In file included from /usr/include/stdio.h:867,
                  from zconf.tab.c:159:
 /usr/include/x86_64-linux-gnu/bits/stdio2.h:36:10: note: ‘__builtin___sprintf_chk’ output between 14 and 4119 bytes into a destination of size 4096
     36 |   return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
          |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     37 |       __bos (__s), __fmt, __va_arg_pack ());
          |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[4]: *** [Makefile:97: zconf.tab.o] Error 1
make[3]: *** [Makefile:53: extra/config/mconf] Error 2
make[2]: *** [Makefile:52: savemenuconfig] Error 2
make[1]: *** [Makefile:59: /sdk/02_sd3403/04_355av100/00_sdk/Hi3559AV100_SDK_V2.0.4.0/platform/liteos/liteos_user/platform/bsp/common/menuconfig.h] Error 2
make: *** [Makefile:480: hiliteos_a53] Error 2

上述问题是在编译liteos时出错的,网上的解决办法是去掉编译选项 -Werror 就可以解决。
找到liteos下的makefile,包含了一个mk文件,在该文件有定义-Werror的选项。去掉即可。

\platform\liteos\liteos_m7\tools\menuconfig\Rules.mk

Select the compiler needed to build binaries for your development system
HOSTCC=gcc
HOSTCFLAGS=-O2 -Wall -Werror
HOSTCXX=g++
HOSTCXXFLAGS=-O2 -Wall -Werror

只遇到上面这个问题,整个osdrv编译通过。

sdk编译问题

1 发现每次编译很多模块都clean和distclean,整个又重新来了一遍,消耗大量时间。若想某个模块不被重新编译或者想menuconfig后不被覆盖,可以进入该模块的顶层,里面有个Makefile文件,在这里面修改编译流程就可以。

2 编译生成的ext4文件系统为96M,在Makefile修改成8G,生成的ext4镜像也是8GB大小的,要是烧写的话非常耗时间,不方便。看生成脚本未指定大小,只是在dd的时候有指定,是不是在系统的时候指定下大小就行,这个只是猜想,需后续验证下是否可行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值