# sdk **Repository Path**: zhihua258/sdk ## Basic Information - **Project Name**: sdk - **Description**: No description available - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: anlogic-linuxsdk - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2024-06-21 - **Last Updated**: 2024-06-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 1、编译步骤: 1) 为SDK创建一个新的目录,并进入该目录,例如:"mkdir sdk;cd sdk;" 解压缩SDK软件包到当前目录,例如:"tar -xzvf sdk.tar.gz"。SDK压缩包中并未包含工具链,相应工具链需要单独获取。 如果是git方式下载SDK,则直接执行"git clone xxxxx/sdk.git --recurse-submodules;cd sdk;git submodule update --init --recursive" 2) 在SDK目录下创建toolchains目录,解压缩linaro 7.5 GCC toolchain压缩包,确保arm处理器的gcc位于这个路径:"toolchains/arm64/7.5.0/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc";而riscv处理器的gcc需要位于如下目录:"toolchains/riscv/gcc/bin/riscv-nuclei-linux-gnu-gcc"。 3) 如果是首次编译,需要执行这两个命令安装编译环境所需的软件(针对ubuntu):"sudo apt-get update;sudo apt-get install make gcc g++ flex bison u-boot-tools liblz4-tool libncurses5-dev" 4) source ./envsetup.sh 5) 选择您的芯片型号,例如:"1. anlogic_dr1m90"。如果该SDK软件包只支持一个芯片型号时,将不会打印菜单供您选择,系统会直接使用该芯片型号。 6) ./build.sh lunch 7) 选择您所需的Board配置,例如:"BoardConfig-ad101_v10-rtlinux_6.1.54-tf-openamp.mk" 8) "./build.sh all",编译生成的固件在"device/output/anlogic_dr1m90/image/"目录下 2、更新PL bitstream并生成BOOT.bin固件: 1) 执行"source ./envsetup.sh"命令选择您的芯片型号,例如anlogic_dr1m90 2) 执行"./build.sh lunch"命令选择您所需的Board配置,例如BoardConfig-ad101_v10-rtlinux_6.1.54-tf-openamp.mk 3) 根据device/anlogic_dr1m90目录下你所选的Board配置文件中"ANLOGIC_BOOTGEN_CONFIG"变量的值,查看使用的*.bif文件的名字,例如是:boot-apu-evb.bif 4) 修改device/anlogic_dr1m90/boot-apu-evb.bif中bitstream加载路径 5) 执行"./build.sh bootgen",生成BOOT.bin在device/output/anlogic_dr1m90/image/目录下 3、编译sd卡启动固件: 1) 执行"source ./envsetup.sh"命令选择您的芯片型号,例如anlogic_dr1m90 2) 执行"./build.sh lunch"命令选择您所需的Board配置,例如BoardConfig-ad101_v10-tf.mk 3) 执行"./build.sh all",生成固件在device/output/anlogic_dr1m90/image/目录下 4) 将sd卡格式化fat32,将image下固件复制进sd卡 5) 插入sd卡,系统启动 4、编译spi nor flash 16MB启动固件: 1) 执行"source ./envsetup.sh"命令选择您的芯片型号,例如anlogic_dr1m90 2) 执行"./build.sh lunch"命令选择您所需的Board配置,例如BoardConfig-ad101_v10-nor-16MB.mk 3) 执行"./build.sh all",生成固件在device/output/anlogic_dr1m90/image/目录下 4) 通过openocd将image下固件烧录进nor flash,系统启动 mtdparts=alspinor:4M(boot),128k(scr),128k(env),128k(dtb),7M(kernel),-(rootfs) 0x000000 - 0x400000 4M BOOT.bin(fsbl、bitstream、uboot) 0x400000 - 0x420000 128K scr 0x420000 - 0x440000 128K env 0x440000 - 0x460000 128K dtb 0x460000 - 0xB60000 7M kernel 0xB60000 - rootfs 5、编译spi nor flash 32MB启动固件: 1) 执行"source ./envsetup.sh"命令选择您的芯片型号,例如anlogic_dr1m90 2) 执行"./build.sh lunch"命令选择您所需的Board配置,例如BoardConfig-ad101_v10-nor-32MB.mk 3) 执行"./build.sh all",生成固件在device/output/anlogic_dr1m90/image/目录下 4) 通过openocd将image下固件烧录进nor flash,系统启动 mtdparts=alspinor:8M(boot),128k(scr),128k(env),128k(dtb),8M(kernel),-(rootfs) 0x000000 - 0x800000 4M BOOT.bin 0x800000 - 0x820000 128K scr 0x820000 - 0x840000 128K env 0x840000 - 0x860000 128K dtb 0x860000 - 0x1060000 8M kernel 0x1060000 - rootfs 6、编译emmc fat启动固件: 1) 执行"source ./envsetup.sh"命令选择您的芯片型号,例如anlogic_dr1m90 2) 执行"./build.sh lunch"命令选择您所需的Board配置,例如BoardConfig-ad101_v10-emmc-fat.mk 3) 执行"./build.sh all",生成固件在device/output/anlogic_dr1m90/image/目录下 4) 通过openocd将image下固件烧录进emmc,系统启动 mtdparts=32k(mbr),32M(fat),128M(rootfs),-(usrfs) 0x000000 - 0x8000 32K mbr(分区表信息) 0x8000 - 0x2008000 32M boot.fat(BOOT.bin、env、dtb、kernel) 0x2008000 - 0xA008000 128M rootfs(ext4) 0xA008000 - userfs(ext4) 7、将自己的文件打包进rootfs 1) 将需要打包的文件放到一个目录中,目录内部的路径按照rootfs中期望的路径进行组织。 2) 在板级配置文件例如BoardConfig-ad101_v10-tf.mk中配置ANLOGIC_EXTRA_ROOTFS_DIR变量,指向需要打包的目录。指定的路径需要是绝对路径。 3) 执行"./build.sh buildroot"重新编译rootfs。 4) 打包目录下的内容更新后,只需执行"./build.sh buildroot"即可,重新生成的rootfs会包含这些内容更新。 8、配置qt 1)修改BoardConfig (1)APU SMP [1] 修改device/anlogic_dr1m90/BoardConfig-ad101_v10-tf.mk ANLOGIC_BOOTSCR="parameter-tf-fat-qt.txt" ANLOGIC_BOOTGEN_CONFIG="boot-apu-evb-qt.bif" [2] 修改linux/arch/arm64/boot/dts/anlogic/anlogic-dr1m90-evb.dts 使能soft_adi_dma status="okay" 使能axi_hdmi status="okay" 使能i2c1 status="okay" [3] 修改device/anlogic_dr1m90/parameter-tf-fat-qt.txt line 5:增加 vt.global_cursor_default=0(可选,用于隐藏boot logo光标) (2) APU AMP [1] 修改device/anlogic_dr1m90/BoardConfig-ad101_v10-rtlinux_6.1.54-tf-openamp.mk ANLOGIC_BOOTSCR="parameter-tf-fat-qt.txt" ANLOGIC_BOOTGEN_CONFIG="boot-apu-evb-qt.bif" [2] 修改linux/arch/arm64/boot/dts/anlogic/anlogic-dr1m90-evb.dts 使能soft_adi_dma status="okay" 使能axi_hdmi status="okay" 使能i2c1 status="okay" [3] 修改device/anlogic_dr1m90/parameter-tf-fat-qt.txt line 4: 修改anlogic-dr1m90-evb.dtb为anlogic-dr1m90-evb-openamp.dtb line 5:增加 maxcpus=1 line 5:增加 vt.global_cursor_default=0(可选,用于隐藏boot logo光标) (3) RPU [1] 修改device/anlogic_dr1v90/BoardConfig-ad102_v10-tf.mk ANLOGIC_BOOTSCR="parameter-tf-fat-qt.txt" ANLOGIC_BOOTGEN_CONFIG="boot-rpu-evb-qt.bif" [2] 修改linux_sdk/sdk/linux/arch/riscv/boot/dts/anlogic/anlogic-dr1v90-evb.dts 使能soft_adi_dma status="okay" 使能axi_hdmi status="okay" 使能i2c1 status="okay" [3] 修改device/anlogic_dr1v90/parameter-tf-fat-qt.txt line 5:增加 vt.global_cursor_default=0(可选,用于隐藏boot logo光标) 2)chip select (1) APU ./envsetup.sh 1. anlogic_dr1m90 (2) RPU ./envsetup.sh 1. anlogic_dr1v90 3)boardconfig select (1) APU SMP ./build.sh lunch 9. BoardConfig-ad101_v10-tf.mk (2) APU AMP ./build.sh lunch 7. BoardConfig-ad101_v10-rtlinux_6.1.54-tf-openamp.mk (3) RPU ./build.sh lunch 4. BoardConfig-ad102_v10-tf.mk 4)编译所有镜像 ./build.sh all 5)kernel menuconfig使能AXI-HDMI ./build.sh kernelmenuconfig -> DeviceDrivers -> Graphics support <*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) <*> DRM Support for Analog Devices HDMI FPGA platforms [*] Enable legacy fbdev support for your modesetting driver [*] Allow to specify an EDID data set instead of probing for it -> Display Interface Bridges <*> ADV7511 encoder -> Frame buffer Devices -> Support for frame buffer devices (FB [=y]) < > Simple framebuffer support -> DMA Engine support (DMADEVICES [=y]) <*> Analog Devices AXI-DMAC DMA support 6)buildroot menuconfig配置directfb和qt ./build.sh buildrootmenuconfig -> System configuration ---> -> /dev management (Dynamic using devtmpfs + eudev) ---> (X) Dynamic using devtmpfs + eudev -> Target packages -> Hardware handling ---> -*- eudev [*] enable rules generator [*] enable hwdb installation -> Fonts, cursors, icons, sounds and themes [*] wqy-zenhei -> Graphic libraries and applications (graphic/text) [*] directfb [*] compile /dev/input/eventX input driver [*] compile keyboard input driver [*] Qt5 ---> [*] gui module [*] widgets module [*] directfb support [*] fontconfig support -> Libraries -> Graphics [*] libdrm ---> 7)修改boot logo(可选) # 注意:若logo行数不能被16整除,则向下取整 convert xxx.xxx xxx.png # 转换图片为png格式 pngtopnm xxx.png > xxx.pnm # 转换成pnm格式文件 pnmquant 224 xxx.pnm > xxx224.pnm # 修改最大颜色数量为224 pnmtoplainpnm xxx224.pnm > logo_linux_clut224.ppm # 转换为ascii格式 cp logo_linux_clut224.ppm linux/drivers/video/logo/ 8)重新编译所有镜像 ./build.sh all 9)生成qt calculator example (1) APU cd device/output/anlogic_dr1m90/buildroot/build/qt5base-f31e001a9399e4e620847ea2c3e90749350140ae/examples/widgets/widgets/calculator ../../../../bin/qmake calculator.pro make cp calculator ../../../../../../../image/ (2) RPU cd device/output/anlogic_dr1v90/buildroot/build/qt5base-f31e001a9399e4e620847ea2c3e90749350140ae/examples/widgets/widgets/calculator ../../../../bin/qmake calculator.pro make cp calculator ../../../../../../../image/ 10)制作SD固件 (1) 格式化sd卡为fat32 (2) 拷贝文件到sd卡 [1] APU SMP anlogic-dr1m90-evb.dtb BOOT.bin boot.scr uImage.lz4 uInitrd.lz4 calculator [2] APU AMP anlogic-dr1m90-evb-openamp.dtb BOOT.bin boot.scr uImage.lz4 uInitrd.lz4 calculator [3] RPU anlogic-dr1v90-evb.dtb BOOT.bin boot.scr uImage.lz4 uInitrd.lz4 calculator 11)烧录qspi启动sd卡的BOOT.bin到qspi flash,切换到qspi启动 12)登录linux运行qt example mount /dev/mmcblk0p1 /mnt/ /mnt/calculator 9、linux下更新stream 1)编写dts文件如下,例如文件名为test.dts。示例中的码流文件为led_cnt.bit,可以改成自己码流文件的名字 /dts-v1/; /plugin/; / { fragment@0 { target-path = "/soc/base_fpga_region"; #address-cells = <0x2>; #size-cells = <0x2>; __overlay__ { #address-cells = <0x2>; #size-cells = <0x2>; firmware-name = "led_cnt.bit"; config-complete-timeout-us = <3000000000>; }; }; }; 2)运行如下命令,将会生成test.dtb文件。如果没有dtc命令,则进行安装:sudo apt-get install device-tree-compiler dtc -I dts -O dtb -o test.dtb test.dts 3)执行如下命令进行fpga配置 mkdir -p /lib/firmware cp -vf test.dtb /lib/firmware/ cp -vf led_cnt.bit /lib/firmware/ mount -t configfs none /sys/kernel/config mkdir /sys/kernel/config/device-tree/overlays/0 echo test.dtb > /sys/kernel/config/device-tree/overlays/0/path 4)如果需要重新配置,则需先执行如下命令,然后再执行步骤三 rmdir /sys/kernel/config/device-tree/overlays/0 10、linux下解析hpf生成fsbl、并替换bitfile用于生成BOOT.bin 1)以dr1m90为例,将hpf文件保存到device/anlogic_dr1m90目录,该目录下只能有一个hpf文件 2)执行"source ./envsetup.sh"命令选择anlogic_dr1m90 3)执行"./build.sh lunch"命令选择所需的Board配置 4)执行"./build.sh fsbl"命令编译master_sdk中的fsbl工程,并将hpf中的bitfile添加到指定的*.bif文件 5)执行"./build.sh bootgen"生成BOOT.bin