599|3

45

帖子

0

资源

一粒金砂(中级)

【RISC-V MCU CH32V103测评】 ---前进的维---开箱 [复制链接]

【RISC-V MCU CH32V103测评】 ---前进的维---开箱

前进的维子

         2021120

1、前言

         本文将

介绍c语言编译的几个阶段(已经熟悉的请跳过)。

浅谈gcc printf的重定向。

开箱美图感言。

                 

2、浅谈一谈程序编译的几个阶段

图片2.png

 

上图是整体构架:简要的看看里面都放的什么东西。

序号

名称

说明

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是什么关系,我就不说了。不懂我说的什么的同学请往下看。

图片3.png

         我们打开工程的build的设置,打开工具链:(如下图)(选中工程 然后alt+enter

工具链的名字就是:riscv-none-embed-gcc

搞过linux的小朋友不会陌生:例如“arm-poky-linux-gnueabi-gcc”。这是同一套标准的命名方式。在这里就不深入的说了。知道他是:riscvgcc“交叉编译”器就好。

为了验证,我们找到工具链的具体位置。如下图。

图片4.png

 

这里还有很多其他的工具,就不在这里细说了,有兴趣的同学去查一查。

 

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:开箱

         取快递,开箱,开发板很惊艳! 比我想的惊艳多了!看!

图片5.png

哈哈! 美的我! 实际上是两件“硕大”的电路板:

图片6.png

 

 

不要被乱入的耳机分神,他只是个参照物

看到板子的一刹那……我的心:哇凉……哇凉……!是不是……安排的哥哥过来,路上被掉包成了弟弟了。本来还想着用实验板多做些东西大家分享一下!原本呢,自己正在画的功能齐全的ch32v103电路板。这件事给自己个教训:“不要指望别人,有发帖子和改帖子的时间,自己的板子早做回来了!” 最近流行那句话叫啥来着?“杀伤力不大,侮辱性极强!”

 

        想着人家意法半导体的mp157500多块钱的板子也是说送就送,一片80块钱的H7芯片一次送5片。(我明白,自己只是站在巨龙的翅膀下的那个人而已。人家送是“维子”所在的平台公司。)

 

但是,谁叫我是别人神(精)一样的存在呢!  板子已经到手,还是把东西用到底! 谁叫咱当时申请了呢。遵守诺言!我会把测试做完!

 

在测试过程中,我会把自己做的电路板发上来,有兴趣的可以参考着做。我自己的样板呢,会做10片,到时候有兴趣的同学可以问我要裸板。另外同学们,ch32v103在淘宝是买不到的!原价不到5元(精细价格我知道但是不能说啊),现在淘宝上卖1321元。我认识他们的一级代理,说是到21年的中旬,才可批量拿货。所以,想要买样片的朋友直接到官方要样片。官方也是给的!官方小批量也买的。

 

5、本文总结

本文简单的介绍了C编译的几个阶段,讲了这工具链实际是gcc交叉编译器。

然后简单的介绍了一下,gccprintf重定向的方法。

最后做了一个简单的开箱介绍。并发表了一下感慨。有些公司还是小家子气啊!

 

 

 

 

        

赞赏

1

查看全部赞赏


回复

45

帖子

0

资源

一粒金砂(中级)

本帖最后由 wintonson 于 2021-1-21 19:34 编辑

后期我自己会做实验板, 有需要的小伙伴,可以和我联系,我送裸板。  还有,本期的pdf,因为维子光顾着欣赏美图,忘了上传了,下期一起上传。


回复

1459

帖子

2

资源

纯净的硅(高级)

兄弟,你的看法平台是VSCode+PlatformIO吗?你的烧写工具是什么?还有你的项目模板是PlatformIO自己的吗?

点评

我一般编辑器和编译器区分来做。VSCode是很好的编辑器。编译器,我还是用官方的。   详情 回复 发表于 2021-1-26 18:37

回复

45

帖子

0

资源

一粒金砂(中级)

bigbat 发表于 2021-1-26 17:37 兄弟,你的看法平台是VSCode+PlatformIO吗?你的烧写工具是什么?还有你的项目模板是PlatformIO自己的吗? ...

我一般编辑器和编译器区分来做。VSCode是很好的编辑器。编译器,我还是用官方的。 


回复
您需要登录后才可以回帖 登录 | 注册

最新文章 更多>>
    关闭
    站长推荐上一条 1/8 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表