一直没找到相关资料,估计中文版网文首次发布,英文的也找了些,没看见太详尽的说明。
安装python
根据之前的创建项目经验,引入硬件之后,在build之前,
petalinux-config -c rootfs
->Filesystem Packages->misc->python->python3
用空格键选中python3 保存
像之前一样build和生成bin文件,这次文件会稍微大些。
如上图所示,能够启动python,但不是默认路径里的,所以得找打相应的路径,才能启动,不过好在能启动了。
把自己写的py文件通过xftp放进去,可以运行。
问题
通过xftp放进去的文件(py文件)重启后就没了
是否得需要ext4文件系统?在ext4文件系统里,重启不会没?
建造完整系统 包含(ext4 app python3)
创建工程
引入硬件后,
选择python3(参考上一节)
创建读取内存app(参考之前blog)
配置文件系统(参考之前blog)
Build
生成bin文件
启动后发现python和app都能用但是找不到ext4文件系统在哪里
把py文件放入任何地方,都能运行但是重启后依然消失
最后发现ext4文件系统在这个目录下
/run/media/mmcblk0p2/
把py文件放进这个目录就不会丢失了。
把TCP服务器的py文件放进去,PC运行客户端py文件,可以连通了。
python3的实时性问题——吃到了,葡萄还是酸的!
Fpga硬件设计两个灯的值直接取自内存0x43c00040
用命令行
root@pl0c:/usr/bin# devmem 0x43c00040 32 0x00000000
root@pl0c:/usr/bin# devmem 0x43c00040 32 0xffffffff
可以快速地(实时地)控制灯
但是用下面的python代码就不能实时控制
import time
import mmap
filename = "/dev/mem"
file = open(filename, "r+b")
data = mmap.mmap(file.fileno(), 0x43c00050)
while(1):
time.sleep(0.5)
if(data[0x43c00040] == 0):
print("ON")
data[0x43c00040] = 255
else:
print("OFF")
data[0x43c00040] = 0
用Python的命令行
data[0x43c00040] = 255
data[0x43c00040] = 0
也不能实时控制灯,有延迟,回车后再次操作命令行(比如按up键)才会执行
疑问python在操作内存上是否有一个缓冲机制导致?
是否在嵌入式上开发还是用C比较靠谱?