root@beaglebone:~/tmp# git clone git://github.com/beagleboard/am335x_pru_package.git
Cloning into 'am335x_pru_package'...
...
root@beaglebone:~/tmp# cd am335x_pru_package/pru_sw/app_loader/interface
root@beaglebone:~/tmp/am335x_pru_package/pru_sw/app_loader/interface# make CROSS_COMPILE="" #无需交叉编译
root@beaglebone:~/tmp/am335x_pru_package/pru_sw/app_loader/interface# cd ../../utils/pasm_source
root@beaglebone:~/tmp/am335x_pru_package/pru_sw/utils/pasm_source# ./linuxbuild
root@beaglebone:~/tmp/am335x_pru_package/pru_sw/utils/pasm_source# cd ../../example_apps
编辑一下example_apps目录中的Makefile,把 PASM?=../utils/pasm_2 改成 PASM?=../utils/pasm,然后继续
root@beaglebone:~/tmp/am335x_pru_package/pru_sw/example_apps# make CROSS_COMPILE=""
编译完成以后PRU assembler和示例程序就安装好了。但BBB默认是没有使能pruss的(BB white好像不用进行下面这一步),所以还需要修改一下系统dtb文件
cd /boot
cp am335x-boneblack.dtb am335x-boneblack.dtb_orig
dtc -I dtb -O dts am335x-boneblack.dtb > am335x-boneblack.dts
(插一句,我之前没有仔细看过dtc命令,原来还可以反编译dtb文件啊。。。)
vim am335x-boneblack.dts
找到
pruss@4a30000 {
...
status = "disabled";
...
};
把"disabled"改成"okay",保存。
dtc -I dts -O dtb am335x-boneblack.dts > am335x-boneblack.dtb_pru
cp am335x-boneblack.dtb_pru am335x-boneblack.dtb
然后重启。
最后,把程序运行需要的库文件拷贝到 /usr/lib 目录下,省得每次都得添加引用目录:
即把 pru_sw/app_loader/lib 目录中的4个文件拷贝到 /usr/lib 中。
至此,BBB也已经配置好了。
重启后我们用自带的example_apps测试一下
root@beaglebone:~#cd tmp/am335x_pru_package/pru_sw/example_apps/bin
root@beaglebone:~/tmp/am335x_pru_package/pru_sw/example_apps/bin# modprobe uio_pruss #每次重启都要运行这句话
root@beaglebone:~/tmp/am335x_pru_package/pru_sw/example_apps/bin# ./PRU_memAccessPRUDataRam
INFO: Starting PRU_memAccessPRUDataRam example.
AM33XX
INFO: Initializing example.
INFO: Executing example.
File ./PRU_memAccessPRUDataRam.bin open passed
INFO: Waiting for HALT command.
INFO: PRU completed transfer.
INFO: Example executed succesfully.
测试成功。
本文最开始的git文件建议在电脑上也clone一份,里面有几个关于PRU的pdf文档可能需要经常查看。