LuckFox 入门记录:编译环境与GPIO
LuckFox RV1106 点灯
本文使用VMwave+ubuntu20.04虚拟机,并用CLion开发linux,简单记录一下配置过程;
1 虚拟机安装
拿到板子,首先是配置环境,虚拟机选择ubuntu20.04,安装教程随便搜一下就行,网络配置选择NAT就行,可以不选择桥接模式,其他没有什么注意事项。
比较难的一点是samba共享文件夹配置,记得安装sumba前更新apt,更新apt后python版本不匹配的问题好像就没了:
sudo apt update
具体步骤,可以参考博客:
https://cn.linux-console.net/?p=13157
如果按照上篇博客配置完成后,在虚拟机中无法添加文件,需要为虚拟机的sambashare更改权限
sudo chmod 777 sambashare
window端访问虚拟机,需要知道虚拟机的ip地址,在ubuntu中使用ifconfig指令获取虚拟机ip地址
ifconfig
若window端,无法访问虚拟机,尝试重启window端电脑,一般就可以连上共享文件夹。
2 烧录sdk
烧录sdk,可以参考博客:
https://blog.csdn.net/SuperiorEE/article/details/133611634
以及LuckFox 的wiki教程:
https://wiki.luckfox.com/zh/Luckfox-Pico/Luckfox-Pico-SDK
不过其gitee地址貌似clone不了,建议在window端下载压缩包,然后使用共享文件传递至虚拟机部分
烧录SDK若是烧录失败,并且在设备管理中的驱动带有感叹号,需要关闭window的驱动强制签名,具体步骤参照:
https://zhuanlan.zhihu.com/p/622920268
至此应该能烧录sdk了
3 GPIO测试
可以直接参考博客:
https://cn.linux-console.net/?p=13157
以及wiki:
https://wiki.luckfox.com/zh/Luckfox-Pico/Luckfox-Pico-GPIO
常用命令有:
连接开发板的命令
adb connect 172.32.0.93
adb -s 172.32.0.93:5555 shell
adb disconnect 172.32.0.93
adb push LuckFox1 /userdata/LinuxTest/
GPIO操作的命令
echo 55 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio55/direction
echo 1 > /sys/class/gpio/gpio55/value
echo 55 > /sys/class/gpio/unexport
简单测试通过后,尝试修改SDK并编译
SDK编译
更改设备书后,SDK编译可以参考:
https://wiki.luckfox.com/zh/Luckfox-Pico/Luckfox-Pico-GPIO#5修改设备树
如果过程中报错/usr/bin/env:'python':No such file or directory,可以参考博客:
https://www.cnblogs.com/chenmoyu/p/15527312.html
不要尝试直接卸载默认python,虚拟机容易崩溃。
Clion配置
CLion建议安装在window端,安装在虚拟机中不太好用,可以用CLion连接虚拟机中的编译器,然后使用Remote host terminal进行开发,效果会好一点。
CLion配置见博客,toolchain部分如果只用c开发的话,可以只选择C编译器gcc和调试gdb:
https://sjtu-robomaster-team.github.io/campus-competition-2-Clion_SSH/
配置好的样子:
部署(deployment)配置的作用,是你在window端每次编译完成后,直接同步到linux虚拟机端,十分好用,建议配置,配置完成见:
Local path:为window端的文件地址
deployment path:为linux端文件地址
IP地址为linux的地址,见上文的ifconfig
常用函数记录
snprintf()
函数原型:
int snprintf(char *str, size_t size, const char *format, ...)
(1) 如果格式化后的字符串长度 < size,则将此字符串全部复制到str中,并给其后添加一个字符串结束符('\0');
(2) 如果格式化后的字符串长度 >= size,则只将其中的(size-1)个字符复制到str中,并给其后添加一个字符串结束符('\0'),返回值为欲写入的字符串长度。
perror函数
perror(s) 用来将上一个函数发生错误的原因输出到标准设备(stderr)。参数 s 所指的字符串会先打印出,后面再加上错误原因字符串。
system函数
int system(const char * command)
执行 dos(windows系统) 或 shell(Linux/Unix系统) 命令,参数字符串command为命令名。另,在windows系统下参数字符串不区分大小写。
说明:在windows系统中,system函数直接在控制台调用一个command命令。
在Linux/Unix系统中,system函数会调用fork函数产生子进程,由子进程来执行command命令,命令执行完后随即返回原调用的进程。
函数返回值
命令执行成功返回0,执行失败返回-1。
linux cat(concatenate) 命令
cat [选项] [文件]
用于连接文件并打印到标准输出设备上,它的主要作用是用于查看和连接文件。