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 能運行並打開一個立方體。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM