【RISC-V MCU CH32V103测评】 ---前进的维---开箱
[复制链接]
【RISC-V MCU CH32V103测评】 ---前进的维---开箱
前进的维子
2021年1月20日
1、前言
本文将
介绍c语言编译的几个阶段(已经熟悉的请跳过)。
浅谈gcc printf的重定向。
开箱美图感言。
2、浅谈一谈程序编译的几个阶段
上图是整体构架:简要的看看里面都放的什么东西。
序号
|
名称
|
说明
|
1
|
Binaries
|
.elf文件
|
2
|
Includes
|
提示包含的目录和文件
|
3
|
Core
|
内核文件(内核外设)
|
4
|
Debug
|
测试的文件(串口, 延时)
|
5
|
Ld
|
链接文件(链接脚本)
|
6
|
Peripheral
|
内部外设(也就是库文件)
|
7
|
Starup
|
启动文件(汇编格式的启动文件)
|
8
|
Obj
|
生成的.hex文件 和 过程中生成的.o文件
|
9
|
User
|
我们使用的文件(main 和 中断啥的)
|
初级程序员,只要知道里面是什么就好了。主要修改的也就是User文件夹下面的内容。实际上,维子告诉大家,在高阶的使用过程中,会修改链接脚本文件。所谓链接脚本,咱们简单的理解就是代码在实际flash里具体放在哪里的指导文件。程序编译过程分为以下的几个阶段: 预处理----编译---汇编----链接。如果了解这个几个阶段,我们就能更深入理解编译器到底做了什么。(很多单片机工程师还真不会这些。)
有兴趣的可以对比一下:gcc 的一些东西:看下面的表格
处理内容
|
Gcc使用的命令
|
生成的文件
|
预处理
|
gcc -E
|
不生成文件
|
预处理和编译
|
gcc -S
|
汇编文件
|
预处理、编译、汇编
|
gcc -c
|
生成obj文件(.o文件)
|
我表格里为什么要用gcc? 在我的第一篇文章里已经看到:维子专门打开了工程设置并专门说了三遍:GNU! GNU GCC是什么关系,我就不说了。不懂我说的什么的同学请往下看。
我们打开工程的build的设置,打开工具链:(如下图)(选中工程 然后alt+enter)
工具链的名字就是:riscv-none-embed-gcc
搞过linux的小朋友不会陌生:例如“arm-poky-linux-gnueabi-gcc”。这是同一套标准的命名方式。在这里就不深入的说了。知道他是:riscv的gcc“交叉编译”器就好。
为了验证,我们找到工具链的具体位置。如下图。
这里还有很多其他的工具,就不在这里细说了,有兴趣的同学去查一查。
3:关于printf()和串口UART
printf()的重定向
我们过一下例程中的代码逻辑:在debug.c文件中。
在主函数中
printf("SystemClk:%d\r\n",SystemCoreClock);
printf函数声明要追到stdio.h文件
int printf (const char *__restrict, ...)
_ATTRIBUTE ((__format__ (__printf__, 1, 2)));
实际上printf真正发出去的函数在debug.c文件中的 _write函数如下
int _write(int fd, char *buf, int size)
{
int i;
for(i=0; i<size; i++) {
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
USART_SendData(USART1, *buf++);
}
return size;
}
这是在gcc下对printf函数重定向的一个实例。为什么要强调GCC呢?因为在MDK(keil)的平台下,是另外的一个操作。网上一抓一大把。搜”printf gcc 重定向 ”可以得到更多的答案。
一般,如果项目中MCU资源允许的情况下,我们会多留一个串口作为打印调试信息的媒介。这种思想在嵌入式linux中很常见,反而是在嵌入式mcu开发中不多见。因为我们有debug调试工具。JTAG可以搞定一切。说实话,一般在单片机应用的场合,每台机器5毛钱的成本,一年下来可不是小数目了。
4:开箱
取快递,开箱,开发板很惊艳! 比我想的惊艳多了!看!
哈哈! 美的我! 实际上是两件“硕大”的电路板:
不要被乱入的耳机分神,他只是个参照物。
看到板子的一刹那……我的心:哇凉……哇凉……!是不是……安排的哥哥过来,路上被掉包成了弟弟了。本来还想着用实验板多做些东西大家分享一下!原本呢,自己正在画的功能齐全的ch32v103电路板。这件事给自己个教训:“不要指望别人,有发帖子和改帖子的时间,自己的板子早做回来了!” 最近流行那句话叫啥来着?“杀伤力不大,侮辱性极强!”
想着人家意法半导体的mp157的500多块钱的板子也是说送就送,一片80块钱的H7芯片一次送5片。(我明白,自己只是站在巨龙的翅膀下的那个人而已。人家送是“维子”所在的平台公司。)
但是,谁叫我是别人神(精)一样的存在呢! 板子已经到手,还是把东西用到底! 谁叫咱当时申请了呢。遵守诺言!我会把测试做完!
在测试过程中,我会把自己做的电路板发上来,有兴趣的可以参考着做。我自己的样板呢,会做10片,到时候有兴趣的同学可以问我要裸板。另外同学们,ch32v103在淘宝是买不到的!原价不到5元(精细价格我知道但是不能说啊),现在淘宝上卖13元21元。我认识他们的一级代理,说是到21年的中旬,才可批量拿货。所以,想要买样片的朋友直接到官方要样片。官方也是给的!官方小批量也买的。
5、本文总结
本文简单的介绍了C编译的几个阶段,讲了这工具链实际是gcc交叉编译器。
然后简单的介绍了一下,gcc的printf重定向的方法。
最后做了一个简单的开箱介绍。并发表了一下感慨。有些公司还是小家子气啊!
|