小编给大家分享一下Ubuntu上hi3531交叉编译环境arm-hisiv100nptl-linux怎么搭建,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!安装SDK1、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 c开发云主机域名ross.install,然后运行./cross.install即可。3) 执行source /etc/profile, 安装交叉编译器的脚本配置的环境变量就可以生效了,或者请重新登陆也可。也可以source /etc/bash.bashrc。在终端上输入命令 arm-linux 再按Tab键,可以看到下图,说明环境变量设置成功了ls@ubuntu:/slq/nfs/mpp$ arm-hisiv100nptl-linux-arm-hisiv100nptl-linux-addr2line arm-hisiv100nptl-linux-gprofarm-hisiv100nptl-linux-ar arm-hisiv100nptl-linux-ldarm-hisiv100nptl-linux-as arm-hisiv100nptl-linux-nmarm-hisiv100nptl-linux-c++ arm-hisiv100nptl-linux-objcopyarm-hisiv100nptl-linux-c++filt arm-hisiv100nptl-linux-objdumparm-hisiv100nptl-linux-cpp arm-hisiv100nptl-linux-ranlibarm-hisiv100nptl-linux-g++ arm-hisiv100nptl-linux-readelfarm-hisiv100nptl-linux-gcc arm-hisiv100nptl-linux-sizearm-hisiv100nptl-linux-gcc-4.4.1 arm-hisiv100nptl-linux-stringsarm-hisiv100nptl-linux-gccbug arm-hisiv100nptl-linux-striparm-hisiv100nptl-linux-gcov验证,编译一个hello.c文件#includeint main(){printf(“hello world!n”);}使用命令:arm-hisiv100nptl-linux-gcc hello.c -o hello 看是否编译成功root@ubuntu:/slq/test# lshello hello.c可见成功生成了二进制文件。5、编译osdrv1.osdrv使用说明本目录设计思路为一套源代码支持两种工具链编译,因此需要通过编译参数指定不同的工具链。其中arm-hisiv100nptl-linux是uclibc工具链,arm-hisiv200-linux是glibc工具链。具体命令如下(1)编译整个osdrv目录:make OSDRV_CROSS=arm-hisiv100nptl-linux all或者make OSDRV_CROSS=arm-hisiv200-linux all(2)清除整个osdrv目录的编译文件:make OSDRV_CROSS=arm-hisiv100nptl-linux clean或者make OSDRV_CROSS=arm-hisiv200-linux clean(3)彻底清除整个osdrv目录的编译文件,除清除编译文件外,还删除已编译好的镜像:make OSDRV_CROSS=arm-hisiv100nptl-linux distclean或者make OSDRV_CROSS=arm-hisiv200-linux distclean(4)单独编译kernel:待进入内核源代码目录后,执行以下操作cp arch/arm/configs/godnet_defconfig .configmake ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux- menuconfigmake ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux- uImage或者cp arch/arm/configs/godnet_defconfig .configmake ARCH=arm CROSS_COMPILE=arm-hisiv200-linux- menuconfigmake ARCH=arm CROSS_COMPILE=arm-hisiv200-linux- uImage(5)单独编译uboot:待进入boot源代码目录后,执行以下操作make ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux- godnet_configmake ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux-或者make ARCH=arm CROSS_COMPILE=arm-hisiv200-linux- godnet_configmake ARCH=arm CROSS_COMPILE=arm-hisiv200-linux-(6)制作文件系统镜像:在osdrv/pub/中有已经编译好的文件系统,因此无需再重复编译文件系统,只需要根据单板上flash的规格型号制作文件系统镜像即可。spi flash使用jffs2格式的镜像,制作jffs2镜像时,需要用到spi flash的块大小。这些信息会在uboot启动时会打印出来。建议使用时先直接运行mkfs.jffs2工具,根据打印信息填写相关参数。下面以块大小为64KB为例:osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_uclibc -l -e 0x40000 -o osdrv/pub/rootfs_uclibc_256k.jffs2osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_uclibc -l -e 0x10000 -o osdrv/pub/rootfs_uclibc_64k.jffs2sudo osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_uclibc -l -e 0x10000 –pad=0x9A0000 -o osdrv/pub/rootfs_uclibc_64k.jffs2sudo osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_uclibc_slq -l -e 0x10000 –pad=0x9A0000 -o osdrv/pub/rootfs_uclibc_64k_slq.jffs2sudo osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_custom_slq -l -e 0x10000 –pad=0x100000 -o osdrv/pub/rootfs_custom_64k_slq.jffs2或者osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_glibc -l -e 0x40000 -o osdrv/pub/rootfs_glibc_256k.jffs2nand flash使用yaffs2格式的镜像,制作yaffs2镜像时,需要用到nand flash的pagesize和ecc。这些信息会在uboot启动时会打印出来。建议使用时先直接运行mkyaffs2image工具,根据打印信息填写相关参数。下面以2KB pagesize、1bit ecc为例:osdrv/活动:慈云数据爆款香港服务器,CTG+CN2高速带宽、快速稳定、平均延迟10+ms 速度快,免备案,每月仅需19元!! 点击查看pub/bin/pc/mkyaffs2image osdrv/pub/rootfs_uclibc osdrv/pub/rootfs_uclibc_2k_1bit.yaffs2 1 1或者osdrv/pub/bin/pc/mkyaffs2image osdrv/pub/rootfs_glibc osdrv/pub/rootfs_glibc_2k_1bit.yaffs2 1 1(7)单独编译PCIE MCC驱动模块:首先,先准备好编译模块时需要连接到的内核源代码目录:cd ./kernel/tar -xvf linux-3.0.y.tgz解压内核源代码之后,需要根据具体的芯片类型,先编译内核(以Hi3531为例),以生成相应的头文件cd ./linux-3.0.ycp arch/arm/configs/godnet_defconfig .configmake ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux- menuconfigmake ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux- uImage内核源代码准备完毕,可以进入PCIE MCC驱动模块的源代码目录,编译驱动:cd ../../drv/pcie_mcc如果是编译主片的ko,直接使用make命令make如果是编译从片的ko文件,请带上参数target=slavemake target=slave(说明:默认情况下编译驱动的工具链是arm-hisiv100nptl-linux-,如需更改请带上参数 开发云主机域名CROSS_COMPILE=arm-hisiv200-linux-)2. 镜像存放目录说明编译完的image,rootfs等存放在osdrv/pub目录下pub│ rootfs_uclibc.tgz —————————————— hisiv100nptl编译出的rootfs文件系统│ rootfs_glibc.tgz ——————————————- hisiv200编译出的rootfs文件系统│├─image_glibc ———————————————— hisiv200编译出的镜像文件│ uImage ————————————————- kernel镜像│ u-boot-hi3531_930MHz.bin ——————————- u-boot镜像│ rootfs_256k.jffs2 ————————————– jffs2 rootfs镜像(对应spi-flash blocksize=256K)│ rootfs_2k_1bit.yaffs2 ———————————- yaffs2 rootfs镜像(对应nand-flash pagesize=2K ecc=1bit)│├─image_uclibc ———————————————– hisiv100nptl编译出的镜像文件│ uImage ————————————————- kernel镜像│ u-boot-hi3531_930MHz.bin ——————————- u-boot镜像│ rootfs_256k.jffs2 ————————————– jffs2 rootfs镜像(对应spi-flash blocksize=256K)│ rootfs_2k_1bit.yaffs2 ———————————- yaffs2 rootfs镜像(对应nand-flash pagesize=2K ecc=1bit)│└─bin├─pc│ mkfs.jffs2│ mkimage│ mkfs.cramfs│ mkyaffs2image│├─board_glibc ——————————————– hisiv200编译出的单板用工具以及pcie消息通讯层ko│ flash_eraseall│ mcc_usrdev_host.ko│ flash_erase│ mcc_usrdev_slv.ko│ hi35xx_dev_slv.ko│ nandwrite│ hi35xx_dev_host.ko│ mcc_drv_slv.ko│ mtd_debug│ flash_info│ mcc_drv_host.ko│ boot_device.ko│ pcit_dma_slv.ko│ sumtool│ mtdinfo│ flashcp│ nandtest│ nanddump│ parted_glibc│ pcit_dma_host.ko│ gdb-arm-hisiv200-linux│└─board_uclibc ——————————————- hisiv100nptl编译出的单板用工具以及pcie消息通讯层koflash_eraseallmcc_usrdev_host.koflash_erasemcc_usrdev_slv.kohi35xx_dev_slv.konandwritehi35xx_dev_host.komcc_drv_slv.komtd_debugflash_infoparted_uclibcmcc_drv_host.koboot_device.kopcit_dma_slv.kosumtoolmtdinfoflashcpnandtestgdb-arm-hisiv100nptl-linuxnanddumppcit_dma_host.ko3.osdrv目录结构说明:osdrv├─Makefile —————————— osdrv目录编译脚本├─busybox ——————————- 存放busybox源代码的目录├─tools ——————————— 存放各种工具的目录│ ├─board_tools ———————– 各种单板上使用工具│ │ ├─reg-tools-1.0.0 ————— 寄存器读写工具│ │ ├─mtd-utils ——————— flash裸读写工具│ │ ├─udev-100 ———————- udev工具集│ │ ├─gdb ————————— 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源代码的目录4.注意事项(1)使用某一工具链编译后,如果需要更换工具链,请先将原工具链编译文件清除,然后再更换工具链编译。方法是make clean.(2)在windows下复制源码包时,linux下的可执行文件可能变为非可执行文件,导致无法编译使用;u-boot或内核下编译后,会有很多符号链接文件,在windows下复制这些源码包, 会使源码包变的巨大,因为linux下的符号链接文件变为windows下实实在在的文件,因此源码包膨胀。因此使用时请注意不要在windows下复制源代码包。(3)目前网络为自适应模式,如果要修改为固定某种速率模式,需要修改文件kernel/linux-3.0.y/drivers/net/stmmac/stmmac_mdio.c:关掉宏定义TNK_HW_PLATFORM_ADJUST,注释掉33行;选择需要固定配置的速率,例如固定配置为百兆全双工的话,打开46行宏定义PHY_SPEED_100即可。(4)Hi3531支持硬浮点,文件系统中发布的库都是硬浮点库。因此请用户注意,所有Hi3531板端代码编译时需要在Makefile里面添加以下命令:CFLAGS += -march=armv7-a -mcpu=cortex-a9 –mfloat-abi=softfp -mfpu=vfpv3-d16CXXFlAGS +=-march=armv7-a -mcpu=cortex-a9 –mfloat-abi=softfp -mfpu=vfpv3-d16其中CXXFlAGS中的XX根据用户Makefile中所使用宏的具体名称来确定,e.g:CPPFLAGS。以上是“Ubuntu上hi3531交叉编译环境arm-hisiv100nptl-linux怎么搭建”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注开发云行业资讯频道!
本文从转载,原作者保留一切权利,若侵权请联系删除。
《Ubuntu上hi3531交叉编译环境arm-hisiv100nptl-linux怎么搭建》来自互联网同行内容,若有侵权,请联系我们删除!
还没有评论,来说两句吧...