在得到安霸的SDK后,可以编译出boot,kernel以及文件系统。
该平台使用Codesourcery编译器,可以从Codesourcery网站下载:
解压后,即可得到所需的编译工具。
在bin目录下,即所需要的编译工具,包括gcc, ld等,当然都加了前缀。
在arm-none-linux-gnueabi/libc下,即glibc的库及相关文件。在编译应用程序时,需要链接这些通用库。
由于SDK将toolchain的目录设为一个固定目录。所以需要将这些目录链接到解压后的编译工具上。
具体做法:
ln –s 编译器目录 /usr/local/CodeSourcery/Sourcery_G++_Lite
ln –s编译器目录 /opt/codesourcery
使用buildroot编译SDK编译时所需要的外部常用工具以及库文件等。
比如busybox工具,makedevs工具以及XMLRPC的库等。
这里可以从buildroot.uclibc.org上,下载最新的buildroot。
配置文件使用SDK提供的默认配置:
将tools\ToolChain\buildroot\local\CodeSourcery目录下的CodeSourcery.config文件覆盖buildroot目录下的.config文件。
然后make。
编译完成后,将buildroot目录链接到/usr/local目录下:
ln –s buildroot目录 /usr/local/buildroot
编译buildroot容易出现问题。
本人遇到的问题,主要如下:
出现错误:error: C compiler cannot create executables
主要是在编译软件包时,编译器在搜索glibc库时,错误地定位到本机的库上,导致库文件不兼容。
解决办法:
在package目录下的Makefile.in文件中设置TARGET_LDFLAGS变量,对glibc库进行定位。注意不能使用-L选项去设置,而要用-wl,-rpath去设置。
编译器安装后,即可进行SDK的编译。
进入SDK目录下的ambarella目录。
首先配置环境变量:
source ./env/CodeSourcery.env
然后配置SDK选项,这里使用默认的一个IPCAMERA的配置:
make ipcam_config
然后即可进行编译;
make
在编译完成后,本人出现下载到目标板上,系统无法启动。后然发现buildroot生成的makedevs工具路径与SDK设置的不一致,导致文件系统中的/dev目录下没有任何文件。
解决办法:
将buildroot目录下的build_arm_CodeSourcery/makedevs-host文件夹内的makedevs工具拷贝到build_arm_CodeSourcery/staging_dir/bin下。
以前做达芬奇的DM3X系列项目时,boot,kernel,文件系统都是分开生成,然后各自烧入flash中。安霸的将这些统一在SDK中编译后,打包生成一个bin文件。然后可以使用DirectUSB,直接下载的目标板上。这大大方便了开发人员。
生成的bin文件在:ambarella/amboot/build/memfwprog下。
根据自己想要升级的部分,选择对应的bin文件。