F1C100S的裸机开发环境搭建

我第一次听说荔枝派是不知道多久之前,在电子发烧友网的众筹板块上(现在貌似没众筹了),那块简陋但功能强大的板子给我留下了很深刻的印象。之后出了荔枝派Nano,资源和性能都有限,但依然可以跑Linux这样的操作系统,而且价格非常便宜,零售一片三十几块。就算不能上Linux、压榨尽可能多的性能,拿来当单片机开发板用,综合性能也是很拔尖的。

但是SoC的生产厂家并没有在官网上给出足够的技术支持,毕竟咱们交不起那么多钱签协议,所以想驾驭荔枝派,要踩的坑非常多,可用的资料资料也少得可怜。虽然有WhyCan的各位大佬完善开发生态,对于我这个喜欢折腾底层的人来说,可用的资料依然不多,只有移植好的u-boot、linux、码云上几个基于keil的模板以及RTT相关底层驱动。

​ 所以,只能见坑填坑,让之后的开发者少踩几个坑。

​ PS:由于up能力有限,一个多月了才点了个灯,所以相关专栏更新会非常……非常慢……(踩坑过程中的大部分代码会在达到一定完善程度之后开源,小测试之类的代码中有用的部分会整合到主线代码中)

​ 一位嵌入式大佬,用F1C100S,也就是荔枝派Nano的使用的SoC制作了一张名片

大佬的名片

​ 这张名片的资料已经在github开源,国内的码云也有同步仓库(https://gitee.com/mirrors/business-card-linux),在这个仓库中,可以找到芯片手册

F1C100S的数据手册和用户手册

​ 在这一部分中,大佬提供的用户手册是F1C600的,所以暂且认定二者手册通用。

​ 参考代码可以使用码云上基于keil进行F1C100S裸机开发的Demo和移植好的u-boot(linux太复杂,暂不考虑),比如https://gitee.com/LicheePiNano/F1C100S_MDK这个例程

​ 要注意的是,这个仓库并没有指定许可证,所以这里默认仓库中的所有代码、文件只能用于学习。不过看TA的用户名,应该也是荔枝派的爱好者,应该不会介意我在这里参考一下TA的代码。

​ u-boot选择https://gitee.com/scotthsl/u-boot-licheepi,注意要有红圈的这个分支,这个分支才是移植到F1C100S的u-boot

要有红圈这个分支

​ 此外,F1C100S在全志(生产厂家)的规划中,属于sunxi生态的一部分,因此要使用sunxi-tools,这个工具在码云上也有从github转存的仓库。在克隆的时候,一定一定要注意原始仓库必须是https://github.com/Icenowy/sunxi-tools.git,只有这个仓库才有**f1c100s-spiflash分支**,只有这个分支编译生成的sunxi-fel工具才能将可执行文件写入SPI Flash中。码云转存的仓库为https://gitee.com/dbc0301/sunxi-tools

一定一定要有红圈中的这个分支

一定,一定要有红圈中的这个分支!!!

​ 因为是裸机开发,所以交叉工具链可以用前面文章中说到的arm-none-eabi-gcc工具链

【折腾是最大的乐趣】【gcc-arm】gcc-arm工具链的使用

不过是个渣渣 · 1297阅读

​ 受限于sunxi-tools的f1s100s-spiflash分支只能在Linux下使用,所以开发环境基于Linux搭建,在这里我使用VMWare创建了一个Manjaro虚拟机。

Manjaro的虚拟机环境进行裸机开发

​ 用Manjaro的原因是我觉得它的UI做的比较好,而且自带gcc、git、make,实际上用比较大众Ubuntu也是差不多的,都是软件的执行环境而已。

​ 装好虚拟机之后(包括切换国内源、更新系统、安装中文输入法),去应用商店装个Code-OSS,其实就是Vscode改了个名字。

​ 接下来,安装arm-none-eabi-gcc工具链,命令为:

​ sudo pacman -S arm-none-eabi-gcc

​ 在终端中键入arm-none-eabi-gcc,如果提示没有输入文件,就表示安装成功了。

测试交叉工具链

​ 之后,依次克隆前面讲到的四个仓库到桌面(或者其他熟悉的位置),命令为

​ sudo git clone https://gitee.com/mirrors/business-card-linux

​ sudo git clone https://gitee.com/LicheePiNano/F1C100S_MDK

​ sudo git clone https://gitee.com/scotthsl/u-boot-licheepi -b nano-v2018.01

​ sudo git clone https://gitee.com/dbc0301/sunxi-tools -b f1c100s-spiflash

​ 这些仓库除了第二个的许可证为unlicensed之外,其他全部为GPL家族许可证,所有文件都可以随意使用。

​ 在克隆sunxi-tools仓库时,需要用-b指定了克隆之后签出的分支。如果忘了加这个参数,克隆完成之后需要执行sudo git checkout f1c100s-spiflash签出f1c100s-spiflash分支。u-boot仓库也是一样的。

克隆好的四个仓库

​ 之后,安装sunxi-tools。

​ 在终端中进入sunxi-tools目录,确定当前分支为f1c100s-spiflash,之后运行make编译安装sunxi-tools中的sunxi-fel。

​ 查看分支:sudo git branch -a

当前分支是f1c100s-spiflash

​ 第一行星号开头的内容就是当前分支

​ 安装工具:sudo make sunxi-fel && sudo make install

​ 之后会开始sunxi-fel的编译和安装,过程中可能会有警告,但着不影响工具的安装。

​ 安装完成之后,在终端键入sunxi-fel,如果出现这样的一大片提示信息,说明安装正确。

​ 这里不能加./来运行sunxi-fel,因为./sunxi-fel表示运行当前目录下的sunxi-fel工具,并不能确认sunxi-fel是否已经安装到系统中。

​ 最后,测试荔枝派Nano是否能被Manjaro虚拟机识别。

​ 首先,需要让F1C100S进入FEL模式,方法是让SPIFlash的1号脚接地,然后再连接USB口。

就这个引脚,接地

​ 因为Manjaro是虚拟机,所要把荔枝派分配给虚拟机使用。

把荔枝派分给虚拟机用

​ 之后,随便打开一个终端,运行sudo sunxi-fel ver

使用sunxi-fel检测F1C100S

​ 如果出现了AWUSBFEX soc=00001663(F1C100S)这样的信息,就表示sunxi-fel工具能识别到F1C100S。如果出现了错误,多试几次就行了,一般两次中至少有一次能够正确识别。


相关链接(侵删)

  1. 【荔枝派Nano】F1C100S的裸机开发环境搭建

=================我是分割线=================

欢迎到公众号来唠嗑: