• am335x SGX 移植


    • 第一步,先安装对应的 PDK 包,并编译出相对应的kernel module。

    • 我是在 PDK 3.0 上面进行开发的,所以要先把相对应的 PDK包。

        下载地址:
         http://software-dl.ti.com/processor-sdk-linux/esd/AM335X/03_03_00_04/index_FDS.html
    
    • 安装完了有如下目录:

        sbc_7109_454_pdk3@aplex:~/ti_sdk$ tree -L 1
    .
        ├── bin
        ├── board-support
        ├── docs
        ├── example-applications
        ├── filesystem
        ├── linux-devkit
        ├── Makefile
        ├── Rules.make
        ├── setup.sh
    
    • 环境变量要注意:

        export PATH=$PATH:/home/sbc_7109_454_pdk3/aplex/linux-devkit/compiler/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf/bin
        export ARCH=arm
        export CROSS_COMPILE=arm-linux-gnueabihf-
    
    • 进入SGX 驱动目录, 并编辑一个 Makefile

        cd  ti_sdk/board-support/extra-drivers/ti-sgx-ddk-km-1.14.3699939
    
        sbc_7109_454_pdk3@aplex:~/ti_sdk/board-support/extra-drivers/ti-sgx-ddk-km-1.14.3699939$ cat Makefile 
    
        export LINUXKERNEL_INSTALL_DIR=/home/sbc_7109_454_pdk3/aplex/board-support/linux-kernel-source-code/kernel_4.4.12
        export SDK_PATH_TARGET=/home/sbc_7109_454_pdk3/ti_sdk/linux-devkit/sysroots/armv7ahf-neon-linux-gnueabi
        #export DESTDIR=/home/sbc_7109_454_pdk3/test/qt5_rootfs
        export DESTDIR=/home/sbc_7109_454_pdk3/test/root_test
    
        all:
        	    make -C ./eurasia_km/eurasiacon/build/linux2/omap_linux 
        	    ARCH=arm TARGET_PRODUCT=ti335x KERNELDIR=$(LINUXKERNEL_INSTALL_DIR)
    
        clean:
    	    make -C ./eurasia_km/eurasiacon/build/linux2/omap_linux 
        	    ARCH=arm TARGET_PRODUCT=ti335x KERNELDIR=$(LINUXKERNEL_INSTALL_DIR) clean
    
        install:
    	    cd ./eurasia_km/eurasiacon/binary2_omap_linux_release/target/kbuild; 
    	    make -C $(LINUXKERNEL_INSTALL_DIR) SUBDIRS=`pwd` INSTALL_MOD_PATH=$(DESTDIR) PREFIX=$(SDK_PATH_TARGET) INSTALL_MOD_STRIP=1 modules_install
    
        //   上面这个 Makefile 主要是指定了特定的环境变量,这些环境变量可以在 ./eurasia_km/eurasiacon/build/linux2/omap_linux 查到。
        //    他目标生成在    /home/sbc_7109_454_pdk3/test/root_test,  主要就是两个  .ko 文件。
        //    去目标文件系统看一下
        cd  ~/test/root_test/
        sbc_7109_454_pdk3@aplex:~/test/root_test$ ls
        bin  etc  lib  usr
        sbc_7109_454_pdk3@aplex:~/test/root_test$ tree
        .
        ├── bin
        ├── etc
        │   └── init.d
        ├── lib
        │   └── modules
        │       └── 4.4.12-gfc3bcb0-dirty
        │           ├── extra
        │           │   ├── bc_example.ko
        │           │   └── pvrsrvkm.ko
        │           ├── modules.alias
        │           ├── modules.alias.bin
        │           ├── modules.ccwmap
        │           ├── modules.dep
        │           ├── modules.dep.bin
        │           ├── modules.devname
        │           ├── modules.ieee1394map
        │           ├── modules.inputmap
        │           ├── modules.isapnpmap
        │           ├── modules.ofmap
        │           ├── modules.pcimap
        │           ├── modules.seriomap
        │           ├── modules.softdep
        │           ├── modules.symbols
        │           ├── modules.symbols.bin
        │           └── modules.usbmap
        └── usr
            ├── bin
            ├── lib
            └── sbin
    
        11 directories, 18 files
    
        //  这里,我们将  lib/modules 复制到你的文件系统里面, 这样,第一步就完成了。
    
    • 第二步,进行相关工具的移植。

        //  大体上,很多的工具都可以在  ti  PDK 的filesystem 里面找到,如果找不到就在 ti_sdk/linux-devkit/sysroots/armv7ahf-neon-linux-gnueabi 里面
        //  先复制两个东西到你的文件系统里面:
        cd    ~/ti_sdk/filesystem/my_rootfs/
        //   上面这个文件夹是我加压的 TI 提供的那个超大的文件系统。
    
        sudo cp  etc/init.d/rc.pvr   ~/test/rootfs_chen_last/etc/init.d/ -rf
        sudo cp usr/bin/pvrsrvctl  ~/test/rootfs_chen_last/usr/bin/   -rf
        //  复制这两个到自己的文件系统内
    
        //  然后将自己的文件系统放在 板子 里面去运行
        /etc/init.d/rc.pvr   start
        //  这时候会提示很多东西,最多的是缺少什么什么动态库
    
        //  这时候回到 TI 那个很大的文件系统内
        cd usr/lib
        sudo cp libwayland-* libattr.*  libGLES* gbm/  libpvr*   libdrm*   libgbm.*  libudev.*   libsrv_*     libEGL.*     libIMGegl*   libdbm*   libglslcompiler*    libpthread*  libusc.so*       ~/test/qt5_rootfs/usr/lib  -rf 
        cd ../..
        sudo   cp   lib/libudev.*     ~/test/rootfs_chen_last/lib    -rf
        sudo cp usr/bin/modetest  usr/bin/kms*   ~/test/qt5_rootfs/usr/bin/ -rf
        sudo cp lib/libattr.*  ~/test/qt5_rootfs/lib   -rf
    
        //  大致将所有的库都复制过去,然后再  /etc/init.d/rc.pvr   start
        //   如果上面这个能正常运行,然后再运行
        kmscube
    
        //  然后有可能会发现还有一个动态库加载不了,但是你明明已经拷贝了这个动态库
        // 进入 ti  的很大的文件系统里面
        arm-linux-gnueabihf-objdump  usr/lib/libglslcompiler.so -p
        //  查看 NEED  需要什么库,将这些库也复制进去
    
        //  移植成功的标志就是  kmscube 能运行并打开一个立方体。
    
  • 相关阅读:
    C# 使用自带Microsoft.Office.Interop.Excel简单操作Excel文件
    Winform修改配置文件节点保存到配置文件
    C# MD5加密字符串
    dev gridcontrol简单的动态设置动态表头
    dev gridcontrol绘制页脚
    dev gridcontrol 导出到excel
    dev gridcontrol设置过滤器下拉列表
    为什么要使用Unix时间戳
    DataTable和DataReader的遍历
    C#生成不重复随机数的方法
  • 原文地址:https://www.cnblogs.com/chenfulin5/p/7245590.html
Copyright © 2020-2023  润新知