东山Pi柒号简介与入门
简介
最近淘了一块东山Pi柒号开发板,应该是最便宜的TRM和DS齐全的linux嵌入式板子,基于STM32MP157(双核A7+M4),支持Linux内核5.4。核心板和底板具体资源见主板简介。
注意PI系列主板仅提供在线入门文档和相关参考资料,没有专门的技术支持和服务。需要相关服务的建议购买教材配套的开发版STM32MP157-PRO。
如果不愿折腾的建议选基于i.MX 6ULL
的开发板IMX6ULL_PRO,虽然性能弱价格贵但资料最多。
编译buildroot
我到手的板子emmc是空的,需先刷系统。官方镜像中,core版连ssh都无,aiot版只有一个版本,而且很旧。所以建议从最新源码编译。
先下载buildroot源码:
1 | cd ~/src |
建议用ubuntu 18.04进行编译,我已经制作了docker镜像,在容器内可直接编译。
1 | docker run --rm -it -v /home/yourname/src:/home/user/src mjysci/buildroot-builder:bionic |
进入buildroot源码目录运行图形配置界面:
1 | cd src/buildroot |
按需启用dhcp(udhcpc -i eth0
):System configuration -> Network interface to configure through DHCP -> eth0。顺便给Root设个密码。
取消编译rtl8188eu和rtl8723bu:位于Target packages -> Hardware handling。
保存退出。
执行编译(可根据host的核心数和内存添加-jN
多线程编译,注意N太大会OOM):
1 | make |
编译完成后,会在~/src/buildroot/output/images/
目录下生成镜像文件。
刷系统
1 | sudo ./SetupSTM32CubeProgrammer-2.16.0.linux |
运行STM32CubeProgrammer:
1 | sudo /usr/local/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin/./STM32CubeProgrammer |
接着按烧写&恢复系统里的步骤将其刷入开发板emmc。
修改ssh配置
串口连上开发板后,修改ssh配置允许密码登录:
1 | sed -i 's@#PasswordAuthentication@PasswordAuthentication@g' /etc/ssh/sshd_config |
重启ssh服务:
1 | /etc/init.d/S50sshd restart |
交叉编译工具链
位于~/src/buildroot/output/host/bin/
目录下。
coremark
2.709/MHz,略低于rv1106(Cortex-A7@1.3GHz,3646.086534)的2.805/MHz。
双核跑分:
debug
报错c-stack.c:55:26: error: missing binary operator before token "(" 55 | #elif HAVE_LIBSIGSEGV && SIGSTKSZ < 16384
升级m4以增加对ubuntu 21之后的支持。但因为需要打补丁所以用18编译,也避免了其他的一些问题。
报错3fc/./os_dep/os_intfs.c:757:9: error: 'struct net_device' has no member named 'wireless_handlers'
取消编译rtl8188eu。
报错/home/user/src/buildroot/output/build/rtl8723bu-b922079a090dcaad58179d478442ff97f18521c9/./include/osdep_service_linux.h:246:8: error: '_timer' {aka 'struct timer_list'} has no member named 'data'
取消编译rtl8723bu。
相关资料
STM32MP157A/D Datasheet
STM32MP157 Reference manual
100ASK_STM32MP157_PRO开发板。资料丰富,板子不同,部分内容需要自己适配。