最近试用了一块联想的linux开发板,没错联想的开发板,名字叫 栗子板,采用 TI AM5708 的芯片,cortex a15 1Ghz 单核心,但是内有 DSP 和两个 cortex M4 核心,芯片是定位于工业控制的,多种内核异构芯片,板载 1G 内存,8G emmc 存储,千兆网口 ,usb 3.0 2.0 ,HDMI 接口,加上 TI 的 SDK 也是强大的无与伦比,显得很高大上,好不好用这个因人而异,不做评价。
TI 的 SDK 确实是很厉害的,大而全,能展示出芯片特有的功能,比如这个芯片的 arm 特性,DSP 算法,图像处理等,有一些3D Qt 图像处理 视频编解码的应用,总体感觉是高大上:
具体使用的时候,感觉不是特别好,
1,sdk bug 还比较多,很明显的 bug, 哈哈
2,可能还不熟悉吧,感觉不太好用,这个是主观原因
3,arago 项目代码,下载是个大问题。
1 和 3 都不是我能改变的,我只是在试用初期资料不太多的情况下,参考以往试用过的板子,做了一个一键编译下载的程序包,分享一下:
功能还很简单,后续再慢慢完善,现在已经能用了,一键编译下载程序包的好处也是很明显的,效率高,还可以避免一些人为手工失误带来的错误。
一键编译下载的用户界面:
前 7 项都是可以用的,后面的也能用,只是需要额外的文件太多了,还需要继续完善,后续发到 github 上
使用起来很方便,全部菜单提示方式,比如编译 uboot ,输入 ./leezboard 回车,选择 1, 开始编译了:
编译完成绿色提示成功,也有可能失败,失败是红色字体提示:
编译 kernel 也是一样的:
安装直接把本文中的源码复制下来,贴到 SDK 根目录中的四个文件中:然后修改 4 个变量即可运行:源码中有注释,写的比较清楚
介绍完了,上源码:
leezboard_sdk 文件:
#!/bin/bash # ==============================以下全部不用动 robe 2019.1.20 # env UBOOT=board-support/u-boot-2017.01+gitAUTOINC+c68ed086bd-gc68ed086bd LINUX=board-support/linux-4.9.69+gitAUTOINC+9ce43c71ae-g9ce43c71ae PWD=`pwd` # PWD=$(pwd) UBOOTDIR=${PWD}/${UBOOT} LINUXDIR=${PWD}/${LINUX} UBOOT_defconfig=LenovoPi_defconfig #LINUX_defconfig=tisdk_am57xx-evm_defconfig LINUX_defconfig=LenovoPi_defconfig # LINUX_defconfig=LenovoPi_robe_defconfig # uboot output file. MLOfile=${UBOOTDIR}/MLO UBOOTfile=${UBOOTDIR}/u-boot.img # linux output file. KERNELfile=${LINUXDIR}/arch/arm/boot/zImage DTBfile=${LINUXDIR}/arch/arm/boot/dts/LenovoPi.dtb DTB_file=LenovoPi.dtb LEEZBOARD_MODULES_FOLDER=${PWD}/leezboard_modules LEEZBOARD_MODULES_TAR=${LEEZBOARD_MODULES_FOLDER}.tar # env ARCH=arm # CROSS_COMPILE=arm-linux-gnueabihf- # export PATH=${PATH}:${PWD}/linux-devkit/sysroots/x86_64-arago-linux/usr/bin CROSS_COMPILE=${PWD}/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-linux-gnueabihf- export ARCH CROSS_COMPILE # CROSS_COMPILE=/home/robe/ti-processor-sdk-linux-am57xx-evm-04.03.00.05/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-linux-gnueabihf- make LenovoPi_defconfig # CROSS_COMPILE=/home/robe/ti-processor-sdk-linux-am57xx-evm-04.03.00.05/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-linux-gnueabihf- make menuconfig # ROOTFS build_rootfs_with_MODULES=yes # ==============================以上全部不用动 robe 2019.1.20 # ==============================以下需要根据自己情况修改 robe 2019.1.20 # imagepath 是从网盘下载的固件,解压后的目录 imagepath=/datadisk/leezboard/leezboard_TI5708/firmware/LenovoPi_programming_4.3 # 这三个变量,可以把sd卡烧录一次后,插到电脑上,能看到自动挂载的目录默认应该是 /media/{name}/boot 和 rootfs sdcard_boot=/media/robe/boot sdcard_root=/media/robe/rootfs sdcard_root_boot=/media/robe/rootfs/boot # 这个是 sd 卡设备文件,这里要不要都可以,leezboard_sdcard 文件中也有这个变量,会把这个覆盖掉 sdcard=/dev/sdc # ==============================以下需要根据自己情况修改 robe 2019.1.20 linux_image_path=/datadisk/leezboard debian9_tar=${linux_image_path}/debian_stretch.tar ubuntu18_tar=${linux_image_path}/ubuntu_18.04_LTS.tar ubuntu16_tar=${linux_image_path}/ubuntu16.04_lts_qinghua.tar debian9_folder=${linux_image_path}/debian_stretch ubuntu18_folder=${linux_image_path}/ubuntu_18.04_LTS ubuntu16_folder=${linux_image_path}/ubuntu16.04_lts
leezboard_sdcard 文件:
#!/bin/bash sdcard=/dev/sdb
leezboard_mod 文件:
#!/bin/bash # robe function echo_s() { echo -ne "\e[32m" echo -n $* echo -e "\e[0m" } function echo_f() { echo -ne "\e[31m" echo -n $* echo -e "\e[0m" } function echo_i() { echo -ne "\e[0m" echo -n $* echo -e "\e[0m" } function check_sdk() { echo_f please check: echo_f 1.TI SDK is installed. echo_f 2.uboot DIR is not moved. echo_f 3.PATCH LenovoPi_patch_4.3. echo_f and then try to rebuild again. } # make uboot function make_uboot() { if [ -d ${UBOOTDIR} ]; then pushd ${UBOOTDIR} make ${UBOOT_defconfig} make if ! [[ $? -eq 0 ]]; then echo_f build UBOOT fail. exit 1 fi popd echo_s build UBOOT successful. else echo_f ${UBOOTDIR} is not exist. check_sdk exit 11 fi } # make linux menuconfig function make_linux_menuconfig() { if [ -d ${LINUXDIR} ]; then pushd ${LINUXDIR} make ${LINUX_defconfig} make menuconfig sudo cp .config arch/arm/configs/${LINUX_defconfig} popd echo_s save .config to arch/arm/configs/${LINUX_defconfig} else echo_f ${LINUXDIR} is not exist. check_sdk exit 12 fi } # make linux function make_linux() { if [ -d ${LINUXDIR} ]; then pushd ${LINUXDIR} make ${LINUX_defconfig} make zImage -j2 if ! [[ $? -eq 0 ]]; then echo_f build LINUX fail. exit 2 fi # make LenovoPi.dtb # make modules popd echo_s build LINUX successful. else echo_f ${LINUXDIR} is not exist. check_sdk exit 12 fi } # make DTB function make_dtb() { if [ -d ${LINUXDIR} ]; then pushd ${LINUXDIR} make ${LINUX_defconfig} make ${DTB_file} if ! [[ $? -eq 0 ]]; then echo_f build DTB fail. exit 3 fi popd echo_s build DTB successful. else echo_f ${LINUXDIR} is not exist. check_sdk exit 12 fi } # make modules function make_modules() { if [ -d ${LINUXDIR} ]; then pushd ${LINUXDIR} make ${LINUX_defconfig} make modules if ! [[ $? -eq 0 ]]; then echo_f build DRIVER fail. exit 4 fi echo_s build DRIVER successful. sudo rm -rf ${LEEZBOARD_MODULES_FOLDER} sudo rm -rf ${LEEZBOARD_MODULES_TAR} mkdir ${LEEZBOARD_MODULES_FOLDER} if ! [ -d ${LEEZBOARD_MODULES_FOLDER} ]; then exit 4 fi make INSTALL_MOD_PATH=${LEEZBOARD_MODULES_FOLDER} modules_install popd pushd ${LEEZBOARD_MODULES_FOLDER} sudo tar -cvf ${LEEZBOARD_MODULES_TAR} * echo_s build DRIVER.tar successful. popd else echo_f ${LINUXDIR} is not exist. check_sdk exit 12 fi } # robe # sudo make ARCH=arm INSTALL_MOD_PATH=/media/rootfs modules_install # passwd -l robe # passwd -u robe # passwd -d robe # tar tvf ti-sdk.tar # make_uboot # make_linux # make_dtb # make_modules # ls -al ${MLOfile} ${UBOOTfile} ${KERNELfile} ${DTBfile} # select sdcard function select_sdcard() { read -p "please input the sdcard device [/dev/sdb]:" sdcard while [ ! -b ${sdcard} ] do read -p "try again. please input the sdcard device [/dev/sdb]:" sdcard done echo "#!/bin/bash" > ${sdk_sdcard_file} echo "sdcard=${sdcard}" >> ${sdk_sdcard_file} } # make SD.CARD with LenovoPi_programming_4.3 function make_sdcard_ti_prebuild_image() { pushd ${imagepath} sudo ./mkmmc-am57xx.sh ${sdcard} MLO u-boot.img zImage LenovoPi.dtb tisdk-rootfs-image-am57xx-evm.tar.xz popd } # NOTE that installing ROOTFS successful function echo_s_rm_sdcard_allfile() { echo_s remove SD card boot partition file ok. echo_s remove SD card rootfs partition file ok. } function echo_s_install_MLO_uboot() { echo_s install MLO ok. echo_s install u-boot.img ok. } function echo_s_install_ROOTFS() { echo_s install ROOTFS ok. } function echo_s_install_DRIVERS() { echo_s install drivers ok. } function echo_s_install_zImage_DTB() { echo_s install zImage ok. echo_s install LenovoPi.dtb ok. } # make_sdcard with DEBIAN_9 TAR function make_sdcard_debian_tar() { sudo rm -rf ${sdcard_boot}/* sudo rm -rf ${sdcard_root}/* echo_s_rm_sdcard_allfile sudo cp ${MLOfile} ${sdcard_boot}/ sudo cp ${UBOOTfile} ${sdcard_boot}/ echo_s_install_MLO_uboot sudo tar -xvf ${debian9_tar} -C ${sdcard_root}/ echo_s_install_ROOTFS if [[ ${build_rootfs_with_MODULES} -eq yes ]]; then sudo tar -xvf ${LEEZBOARD_MODULES_TAR} -C ${sdcard_root} echo_s_install_DRIVERS fi sync sudo cp ${KERNELfile} ${sdcard_root_boot}/ sudo cp ${DTBfile} ${sdcard_root_boot}/ echo_s_install_zImage_DTB sync } # make_sdcard with ubuntu_18.04_lts TAR function make_sdcard_ubuntu18_tar() { sudo rm -rf ${sdcard_boot}/* sudo rm -rf ${sdcard_root}/* echo_s_rm_sdcard_allfile sudo cp ${MLOfile} ${sdcard_boot}/ sudo cp ${UBOOTfile} ${sdcard_boot}/ echo_s_install_MLO_uboot sudo tar -xvf ${ubuntu18_tar} -C ${sdcard_root}/ echo_s_install_ROOTFS if [[ ${build_rootfs_with_MODULES} -eq yes ]]; then sudo tar -xvf ${LEEZBOARD_MODULES_TAR} -C ${sdcard_root} echo_s_install_DRIVERS fi sync sudo cp ${KERNELfile} ${sdcard_root_boot}/ sudo cp ${DTBfile} ${sdcard_root_boot}/ echo_s_install_zImage_DTB sync } # make_sdcard with ubuntu_16.04_lts TAR function make_sdcard_ubuntu16_tar() { sudo rm -rf ${sdcard_boot}/* sudo rm -rf ${sdcard_root}/* echo_s_rm_sdcard_allfile sudo cp ${MLOfile} ${sdcard_boot}/ sudo cp ${UBOOTfile} ${sdcard_boot}/ echo_s_install_MLO_uboot sudo tar -xvf ${ubuntu16_tar} -C ${sdcard_root}/ echo_s_install_ROOTFS if [[ ${build_rootfs_with_MODULES} -eq yes ]]; then sudo tar -xvf ${LEEZBOARD_MODULES_TAR} -C ${sdcard_root} echo_s_install_DRIVERS fi sync sudo cp ${KERNELfile} ${sdcard_root_boot}/ sudo cp ${DTBfile} ${sdcard_root_boot}/ echo_s_install_zImage_DTB sync } # rootfs.TAR will be done something # apt install qemu-user-static function not_use() { sudo cp -rf /usr/bin/qemu-arm-static ${ubuntu18_folder}/usr/bin/ sudo chroot ${ubuntu18_folder} /usr/bin/qemu-arm-static /bin/sh -i passwd -d root echo leezboard > /etc/hostname # sudo tar -xvf ${LEEZBOARD_MODULES_TAR} -C ${ubuntu18_folder} sudo rm -rf ${ubuntu18_folder}/usr/bin/qemu-arm-static } # make_sdcard with DEBIAN_9 folder function make_sdcard_debian_folder() { sudo rm -rf ${sdcard_boot}/* sudo rm -rf ${sdcard_root}/* echo_s_rm_sdcard_allfile sudo cp ${MLOfile} ${sdcard_boot}/ sudo cp ${UBOOTfile} ${sdcard_boot}/ echo_s_install_MLO_uboot sudo cp -rf ${debian9_folder}/* ${sdcard_root}/ echo_s_install_ROOTFS if [[ ${build_rootfs_with_MODULES} -eq yes ]]; then sudo tar -xvf ${LEEZBOARD_MODULES_TAR} -C ${sdcard_root} echo_s_install_DRIVERS fi sync sudo cp ${KERNELfile} ${sdcard_root_boot}/ sudo cp ${DTBfile} ${sdcard_root_boot}/ echo_s_install_zImage_DTB sync } # make_sdcard with ubuntu_18.04_lts folder function make_sdcard_ubuntu18_folder() { sudo rm -rf ${sdcard_boot}/* sudo rm -rf ${sdcard_root}/* echo_s_rm_sdcard_allfile sudo cp ${MLOfile} ${sdcard_boot}/ sudo cp ${UBOOTfile} ${sdcard_boot}/ echo_s_install_MLO_uboot sudo cp -rf ${ubuntu18_folder}/* ${sdcard_root}/ echo_s_install_ROOTFS if [[ ${build_rootfs_with_MODULES} -eq yes ]]; then sudo tar -xvf ${LEEZBOARD_MODULES_TAR} -C ${sdcard_root} echo_s_install_DRIVERS fi sync sudo cp ${KERNELfile} ${sdcard_root_boot}/ sudo cp ${DTBfile} ${sdcard_root_boot}/ echo_s_install_zImage_DTB sync } # make_sdcard with ubuntu_16.04_lts folder function make_sdcard_ubuntu16_folder() { sudo rm -rf ${sdcard_boot}/* sudo rm -rf ${sdcard_root}/* echo_s_rm_sdcard_allfile sudo cp ${MLOfile} ${sdcard_boot}/ sudo cp ${UBOOTfile} ${sdcard_boot}/ echo_s_install_MLO_uboot sudo cp -rf ${ubuntu16_folder}/* ${sdcard_root}/ echo_s_install_ROOTFS if [[ ${build_rootfs_with_MODULES} -eq yes ]]; then sudo tar -xvf ${LEEZBOARD_MODULES_TAR} -C ${sdcard_root} echo_s_install_DRIVERS fi sync sudo cp ${KERNELfile} ${sdcard_root_boot}/ sudo cp ${DTBfile} ${sdcard_root_boot}/ echo_s_install_zImage_DTB sync } function menu() { echo_i [1] make uboot echo_i [2] make linux menuconfig echo_i [3] make linux echo_i [4] make DTB echo_i [5] make modules echo_i [6] select SD card device echo_i [61] install TI_ROOTFS to SD card echo_i [7] install debian 9 to SD card \(tar\) echo_i [8] install ubuntu 18.04 to SD card \(tar\) echo_i [9] install ubuntu 16.04 to SD card \(tar\) echo_i [0] install debian 9 to SD card \(folder\) echo_i [a] install ubuntu 18.04 to SD card \(folder\) echo_i [b] install ubuntu 16.04 to SD card \(folder\) } function do_something() { menu read -p "please select: " ANSWER if [[ $ANSWER == "1" ]]; then make_uboot;fi if [[ $ANSWER == "2" ]]; then make_linux_menuconfig;fi if [[ $ANSWER == "3" ]]; then make_linux;fi if [[ $ANSWER == "4" ]]; then make_dtb;fi if [[ $ANSWER == "5" ]]; then make_modules;fi if [[ $ANSWER == "6" ]]; then select_sdcard ;fi if [[ $ANSWER == "61" ]]; then make_sdcard_ti_prebuild_image;fi if [[ $ANSWER == "7" ]]; then make_sdcard_debian_tar;fi if [[ $ANSWER == "8" ]]; then make_sdcard_ubuntu18_tar;fi if [[ $ANSWER == "9" ]]; then make_sdcard_ubuntu16_tar;fi if [[ $ANSWER == "0" ]]; then make_sdcard_debian_folder;fi if [[ $ANSWER == "a" ]]; then make_sdcard_ubuntu18_folder;fi if [[ $ANSWER == "b" ]]; then make_sdcard_ubuntu16_folder;fi } # make_uboot # make_linux_menuconfig # make_linux # make_dtb # make_modules # make_sdcard_ti_prebuild # make_sdcard_debian_tar # make_sdcard_ubuntu18_tar # make_sdcard_ubuntu16_tar # make_sdcard_debian_folder # make_sdcard_ubuntu18_folder # make_sdcard_ubuntu16_folder
leezboard 文件:
#!/bin/bash
sdk_env_file=./leezboard_sdk
sdk_sdcard_file=./leezboard_sdcard
sdk_modules_file=./leezboard_mod
source ${sdk_env_file}
source ${sdk_sdcard_file}
source ${sdk_modules_file}
do_something
现在只用到这里,做到这里,后续会再更新,源码更新到 github 上,有兴趣的话可以关注 https://github.com/robe-zhang/LeezBoard_TI5728
一键程序包,现在目录还有点乱,6 后面应该是 7 的,结果中间加了一个 61,哈哈。这个一键程序包原本是没有计划的,自己随便用用算了,结果就越写越多,越写越乱,再后来一想,完全可以做的像 orange pi t-firefly 板子那样的一键程序包也是不错的,就重新整理一下有了此文。
原创作品,未经权利人授权禁止转载。详情见转载须知。 举报文章
我要举报该内容理由
×