粉丝7508获赞4.9万

今天来帮大家解决一下在使用 cryon 翻译器开发单片机的时候遇到的一些常见问题。首先就是工具链中检测不到构建工具和编辑器,遇到这种情况,首先确定你安装了 gcc 翻译环境,然后进入系统环境变量, 查看工具链路径是否添加到了你的 pad 环境变量下。如果环境变量这一步没有问题, 那大概率就是因为你的电脑用户名是中文的,珠宝之前就遇到这个问题,于是新建了一个英文名用户就好了, 建议大家直接新建用户,如果修改用户名的话会非常麻烦,一个步骤错了,可能导致用户数据全部丢失,新建好后就可以识别到了。第二个问题就是在第一次下载程序或者切换其他单片机开发的时候, 会提示 openout in it field。 遇到这个情况,首先确保你的下载器是可以使用的。然后跟随我的鼠标找到编辑配置,查看一下你的面板配置文件是不是白色可用的,如果是像这样红色的, 说明你的配置文件不可用,需要手动重写配置文件。打开翻译环境的文件夹, devon v f, 找到任意一个点 c f 机配置文件,双击用任意一个开发工具打开 看一下你的配置文件格式和我的是不是一样的,如果不一样,则需要手动修改成和我一样的。如果你开发的不是 stm 三二 f 一 系列的单片机,则需要修改这两个路径的。最后把它改成你使用的单片机型号和调试器型号, 修改好后保存文件,然后进入 devon devon 文件夹,复制一份刚刚的配置文件,然后根据你的开发芯片对应修改文件名称, 然后回到 client 重新包含修改好的配置文件即可。

国产 r m 单片机 c m s 三十二 l 零五一的 g c c 变异环境实现 国产 rm 单片机 cms 三十二 l 五十一厂家编译环境是 q 环境,历程用 q 编译能顺利通过,但是很多共享程序资源用的是 gcc 编译,因此选择 q 的 gcc 编译选择, 但历程用 g c c 编译不能顺利通过。换了厂家的 g c c 目录的启动文件, g c c 边椅依然没过,还有七个错误。经过努力查找,发现国内有家公司 支持 c m s 三二 l 零五一的 g c c 编译,软件名称, cyclem studio, 下载后解压要求,在地盘 找到我要的文件,打开空空无物,因原来环境目录不对,更改目录,打开文件,从文件系统中打开项目,选择厂家已编译好的 blinky, 所在目录 选择与打开后就有 blinky 在项目管理中 打开 bling t 编译发现有错,错误,是找不到 make 的运行文件还是存在环境设置不对,选择 blingly, 按右键 再弹出菜单,选择最下一项属性,选择资源链接的资源, 删除第五、六项一到四项对的文件位置对,就可以再选择 c c 加加构建环境,按 pass 中的文件位置修改软件中的 path, 这样再次编译就可以顺利通过。

每一个电子模块都会有一个 gnd 接口,大多数情况下,你可以把它理解为电池负极。在同一个电路中,所有的 gnd 都是要连接在一起的,为了方便接线, 很多开发板上面都有多个 gnd 接口,而且它把 gnd 简写成了 g, 还有的模块把 gnd 写成了简号。电路中有负极的 gnd 就一定会有正极,正极的话比 gnd 要复杂一些,有的写的是 vcc, 有 的写的是五伏。 vcc 就是 正极的输入口,需要别人来供电, 而五伏代表了正极的输出口,能提供一个五伏的电压,但 gnd 不 用管这些,所以这里的三伏是正极输出,正极输入是自己的 v、 i、 n。 像这些模块的使用方法,我都出过视频教程, 比如这个心率传感器,在我主页搜关键词心率就可以找到。一分钟学一个模块,不求高端,只求简单。

在 windows 和 linux 下编译同样的 s t m 三二程序,速度差别有多大?电脑安装的是 windows 和无版图 linux 双系统,没有使用虚拟机。 windows 和 linux 开发环境都是 s t m 三二 q 八 d 一点一,三点二 g c c 变异器, 虽然每次的变异时间都不太一样,但温度四下变异时间都在十秒以上,而 linux 下只需要三秒多, linux 下还是要快不少。感兴趣的同学可以试一下在 linux 下开发 stm 三二单变机程序,麻烦点赞关注啊!

大家好,我是豆浆油条啊,谢谢大家的关注啊。我们这个是一套全新的面向对象的就是 c 家家的建筑师开发教程啊,完全免费啊。嗯,话不多说,咱们直接开始。 首先咱们需要,嗯,是需要两个软件的, 嗯,一个是 vs code, 还有一个是 mdk, 这是两种开发环境啊。然后就是一个 stm 二的一个配置文件 配置芯片的一个软件。嗯,首先呢 vs code, 那 就直接下载就行了。 vs code, 然后点点这里的 download 就 可以。 然后 windows 就 选 windows 啊,我们现在是在 windows 下开发,大家选 windows 就 行了。嗯,然后我这边我这边应该是下载好了,然后我也安装好的。安装也很简单啊。 嗯,安装也很简单,其实就是一步点到底,我就不安装了啊,我们直接直接先配置吧。 windows code 先打开。 嗯,怎么电脑还卡了?稍等啊。稍等,怎么了这是?嗯, 管理员身份一边写吧。 ok, 打开了之后就是这样子的, 我们都什么都别管啊。先把语言汉化一下,然后先在这个这个图标上面啊输入嵌,意思 就是中文的意思,然后 install, 这个地方有个 install, 点安装就行了,它会自动安装,安装完呢,它说,嗯, change language and restart, 就是 改变软件重启,我们点一下, 重启之后就变成中文的了啊,这就是我们中文的一个开发环境。嗯,第二个就是 q, 嗯,这个 qmax, qmax 呢是 s t m s t m 三二的一个芯片的配置工具啊。 嗯,这个我们主要是以三二做教程,但是其他软件是一样的,其他就是三十二位的芯片是一样的,你只要有。呃,他给官方给的开发包都可以啊,我们也不安装,大家直接双击安装就行了。双击安装,然后我们直接打开这个软件, 嗯,打开软件就是就是长这样子啊。好的,我们先用 v s code 的 配置,嗯, g c c 的 开发环境啊,这是 c g c c 的 开发环境,首先要安装一个插件,叫 s t m 三二 q 八 id, 对 吧? qq id, 呃,安装这个插件之前呢,我们要先做一件事情,就是配置文件,我们新建一个配置文件,然后选,然后我看重命名名称,在这里我们选择 s t m 三二 c 加加, ok, 也就是说这个,这个配置软件什么意思呢?就是说以后你要开发 s 七零三二的时候,你使用这个配置软件,它会自动加载这个插件,呃,不会混乱,这个这个配置软件建好了之后给它关掉就行了。 然后我们安装这个 s m o cube id, 这里有个安装点这里或者点这里都行,随便啊,点安装。 嗯,安装这个安装就行了啊, 其他的什么都不用管,这个应该就安装好了。安装好了,我们打开这个 icm, 它有 cube max 啊,我们选择第一个就是 start my project from mcu, 我 们是从芯片开始开发, 嗯,然后我们选择一款一款芯片啊, s t m 三二 g 四三幺 c b t 六,这个我们点一下,然后 start project 这个地方点一下, 然后呢?配置上面我们先什么都不动,我们点到 project manager 这个管理这个地方, 我们回到,嗯,回到我的教学文件夹在哪?嗯,还在上一集, 嗯,这里面 teacher, 然后 all code, 大家可以建我们跟我建一样的文件夹,然后 vs code, 我 们就放 vs code 的 里面,然后取一个名字,我们就选 led 吧。 好的,然后这个地方要注意啊,公斤电这个地方我们选择 c make c, make g c c, 然后这个地方将所有的文件分成点 c 和点 h 啊,这个, 嗯,芯片这一块什么都不用动,什么都不用动,然后我们 ctrl s 保存或者是 file, 这里面有个 c o project。 好 的,然后我们点嗯 generate code 生成代码。 好的,然后我们打开这个 code, 打开 code 就是 这么一个样子。这么一个样子呢,我们直接用 west code 打开。 嗯,通过 code 打开。 vs code 打开啊,把这个线关掉,通过 code 打开, 然后点是我信任, 然后它会自动弹出,你选择。呃, led 的 预设配这个 led 就是 我们系统的屏,那么选择 bug, 然后它这边会那个会弹出好多东西啊,都不用管。取消取消。 这个地方要点 yes 啊,点 yes 啊,稍微等一会儿啊,稍微等一会儿。嗯,我们可以先看看它的一个架构啊。 嗯, sauce 这个地方核心啊,这有 sauce sauce 的 源文件,然后 i n c i n c 是 那个头文件啊,主要是这两个在里面开发就行了。然后呢? vsco 的, 它是使用这个 cmake 去 呃,组织构建代码的啊,所以这个大家要要懂一点 cmake 的 语法,不懂也没关系,慢就是边教边学,然后这边右边这边如果已经没有提示了,我们可以点一下这个下面这个生成, 生成呢,就是翻译,翻译它会弹出 ram 是 多少,然后 flash 是 多少。嗯,然后也可以在这里看。嗯,应该是在这里 啊,在这里,在这个,这个这个图标, cmix 这个图标,它会显示你的 ram 跟 flash 的 占用内存是多少。 嗯,后面呢?这就是一个基本的框架,就已经搭好了。后面就是我们改用 c c 加开发,因为它这个全是。嗯,点 c 跟点 h, 我 们要改,我们要把它改成点 c p p 啊,点 c p p 就是 c p p 加开发。 嗯,编一下啊,看一下 ram 跟 flash。 好, 这个环境就搭好了。嗯,这个 vs code 可以 通过。 嗯,包括你编辑代码是没有问题的,然后编辑链接,下载调试都是可以的啊。嗯,调试在这边啊,运行和调试我们要创建一个接受文件,然后选择 s g n k g d b server, 创建好了保存就行了,什么都不用动, 然后这边就会弹出来一个 s g m 三二 s g n k server 啊,嗯,框架已经搭好了啊,这节课先这样,下节课我们讲 m d k 的 用怎么用 c 加去开发三十二倍的芯片啊? m d k 就是 就是 k l k l m d k。 好, 谢谢大家。

嗨,各位小伙伴们大家好,今天给大家带来一期 vs code 加 gcc 加 mac file 加 opencd 的 一套全用式软件开发工具链。上一次的图文教程发出来之后,很多小伙伴们想要一期视频教程,嗯,今天特意来录制一期, 这套工具链有这有这么四个工具组成,其中 westcode 为我们提供一个编编码的 i d e 环境。 g c c 的 作用是将我们的点 c 点进去文件编辑,生成一个可以在开发板上执行的可执行文件。 makefile 的 作用是告诉告诉 g c c 该怎么去编辑我的工程,我的我点 c 点 h 的 编辑以及链接的过程是用 makefile 来主来主导的。呃, open a o c d 的 作用是配合 vs code 的 context debug 插件实现我们的烧录以及调试的功能。 vs code 的 安装教程这边就不详细的去介绍了,那重点放在 g c c make 和 open a c d 上, g c c 打开之后,这打开之后这个界面下面会有很多。呃,不同版本的那个 g c c 变音器。呃,然后这里大家做千户式开发,我推荐大家用用幺幺版本,也就是它的 c 语言特性是 c 幺幺, 现在应用比较广泛。好,这边,呃我们去下载的时候去选择,建议大家去选择点 exe 文件,点 vip 文件也是可以的。 嗯,下载点 exe 文件的好处是它是以安装包的形式下载下来的,就像我们平常安装应用程序一样,那种操作方式。好,我们这边会会得到这么一个点 exe 文件。双击打开, 选择语言式简体中文安装向导界面,这里选择一下安装路径。 ok, 现在是已经安装完成。嗯,在安装完成了这个界面,记得要把这个 add paste to environment available 这个选项给它勾选上。这里的作用是将你的 g c c 的 安装路径添加到你系统的环境变量里面。下一步我们需要验证一下 g c c 的 安装是否成功。 进入到命令行界面,输入一下指令,获取一下 g c c 的 版本号。好,如果你成功获取了打印,那么恭喜你已经 成功把 g c c 安装在了你的电脑上。呃,如果,如果你这里没有成功打印的话,你也不要慌,首先要确保你的那个刚刚安装成功的界面勾选了 add to paste 的 选项。嗯,在勾选它的情况下,如果它还没有打印的话。嗯,你可能需要重启一下电脑,然后重新输入这条指令试一下。 好,如果你成全之后,重新输入条指令还是没有,那这个时候你可以进入到右右键此电脑 属性,然后下滑,选到高级系统设置,点击环境变量, 这时候去检查你的配置的这个这边量里面啊,有没有你刚选的 g c c 安装的路径,如果没有的话,你可以手动把它添加进去啊。比如说,刚刚,刚刚我选的安装路径是在这个 g c c 这个文件夹下面。 好,这时候我们往下再走一级,然后到 bin, bin 这一这一级。好,这个路径呢,就是你需要去添加到系统变量的路径,就是新建这里,这时候因为我和上面重复了,我就不重复的添加了。 ok, 到这里我们已经完成了 g c c 的 安装。嗯,下一步呢,是要安装 mac, 嗯, mac 这里安装步骤比较简单啊,这里是利用了一个 windows 的 包管理工具叫叫它, 它的作用呢就是可以可以使我们的 windows 的 窗口命令行像 linux 那 样的那个。呃, pop installer 那 样去安装一些 组建那。呃,我们去安,第一步首先是要安装这个这个东西,安装这个东西的指令是这一行,我们我们打开这个管理员中的右键,右键右下角的这个图标,选择这里。好,这里的话我们就把这这个这个东西给拷贝过来, 这样的话去执行它,我这里已经是安装成功了的,然后这里就是已经已经在这里找找到了,所以我这就安装失败了,然后再安装,安装好它之后再去再去执行这个去安装 mac, 这样就可以把 mac 成功的安装在你的电脑上,然后验证 mac, mac 安装, 同样的打 mac 刚刚 works 好, 这个时候也是成功。嗯,打印出了 mac 的 版本号。好的,到这里我们已经完成了 mac 安装。 嗯,下一步呢是 open ocd 的 安装, open ocd 它的作用就是配合 vs code 的 context debug 插件插件,然后去完成一些可调试的操作。 呃,这里直接去 o p o c d 官网去下载这个文件夹,下载完成之后,然后需要你手动地把 把这个路径,把这个路径添加到系统的环境变量。步骤呢?和和和,那个是和,前面检查 g c c 和 mac 的 那个步骤是一样的, 进到属性界面,点击高级系统设置环境变量,然后在在在这个这个 face 环境变量里边,然后去添加你的 open o c d 路径。 好,到这一步呢,我们已经把该安装的都安装好了。呃,下一步呢是进入到 vs code 的 里面,那么进入到 vs code 的 界面里面之后,打开插件市场,呃,这个时候需要我们去安装一个 context debug 这么一个插件, 呃。其中 context debug 它它会附带着去安装一些,呃其他的插件,然后用来实现我们整个调试, 呃,像这个 tracker memory view 是 用来去读 mcu 的 内存的啊,这里是用来去看外设的,然后这个是有 r t o s 的 情况下,可以去追溯你的 r t o s task 的 对战。 好,这些这些插件都安装好之后呢?然后我们就需要去实现这个文件来来实现翻译,稍录和调试。 好,那这边,呃主要是有三个文件,一个是 vsco 这边的一个 task, jason, 还有 lt 的 jason, 呃, tcc 这块是需要一个 makefile 来实现你工程的翻译,呃。像 makefile 这块,呃,我没有去研究它怎么写,我用的方法是我在,我在我的, 呃,比如说在我这个工程当前工程的目录下吧,我去,我去获取一下当前目录下的这个,呃,我工程的目录结构,我可以这边打印出来,得到了我的目录结构,然后把这个目录结构去丢给 ai, 让 ai 帮我生成一个 mac file, 嗯,这个 mac file 就是 a h 生成的,这边我是可以直接使用的,我什么都没有改。在我们实现好我的 mac file 之后呢,我们可以先试着在在 在当前的这个,呃目录下,中间下直接直接敲一个, sorry, 我 需要,我需要去到我的 mac file 所在的路径, 直接去执行 mac 指令,这个时候就是,呃,正常的话你是应该有这个,呃,有相关一些翻译完成的一些提示的,具体的提示内容由你的 mac file 去决定,这里有一些打印内容啥的。 好,如果,如果你已经你已经呃可以通过 makefile 去编辑你的工程的情况下,那这个时候它就需要跟 vs code 给它联动起来。这边 vs code 是 提提供了一个 task json 文件,这时候可以去就是可以给我们的呃 vs code 去创建一些任务,让让 vs code 去运行。 那,呃,像这边我见的有这个呃重新翻译,翻译,清 clean 以及这个呃烧录。好,那,那我这边打开点一下 rebuild, 看一下效果。 ok, 这里它呃 rebuild 的 情况下,第一步就是先去清除一下你上一次翻译的产物,那下面就开始正式翻译我们的工程。嗯,这里边是我用到了一些点 c, 点 s, 点 h 以及我的启动文件, 然后这里输出了呃翻译的产物, text 文件,合并文件以及我的 e l f 文件, 这样就实现了我们整个工程的一个变异。这些任务本质上是在执行一些我们的呃在命令行里执行的指令,它这里通过你的一些配置给你拼凑出来整个指令,然后在在终端上里面去运行。 呃,这里是我使用 open o c d 进行烧录的一个任务,呃,其中这个文件,这个 task 点接收文件也可以去丢给 ai, 让让 ai 去帮你生成这么一个文件,基本上可以做到是拿拿来就用的, 只你去,你只需要跟 ai 去描述清楚你的呃开发环境, make 加 g c c, 加 open o c d, 然后想想实现你工程的编料烧录及调试,然后这个时候 ai 就 会就会去给你生成你的 task 节省和和和 lock 的 节省文件。好,那我们来到这个 lock 的 节省文件里边。呃,这边是跟这个调试运行和调试这一块,呃,有有关联的。 呃,在这里,在比如,比如说这里我我建了两个拉琴接圣的任务,一个是 debug 为 open o c d, 还有个是 p i o c d 这边, 那这边我对应的就有两个,就是当当你使用 p i o c d 去 debug 的 时候,你就选择 p i o c d 就 好了,选择 open o c d 的 时候,你就选择 open o c d 来用 这个文件,就是也是 ai 直接输出进来的,呃,输出这个文件情况下,你需要去给 ai 描述清楚你的主控芯片型号,然后以其以及你的调试器类型,你是 g link 或者 st link 或者 d p link 这样, 呃,然后可能需要你改一下的就是这个这个东西了,你的 svd file 的 路径 这边是 m m c u m c u 型号停在这里,然后这个就是你的调试器型号。好,那,那这么一整套配下来,其实,其实,呃,这个时候你的开发环境已经已经完全搭建起来了,我这时候连接一下我的开发板, ok, 这时我已经通过我的调试器连接到了我的开发板。嗯,首先运行一下烧录, ok, 这边烧录已经执行完成。呃,其实给你看到它这边就是,呃,在你的终端上去运行那条指令,这条指令是是谁拼出来的?就是你的 task 点接受里里的任务拼出来的。 看一下 open o c d 杠 f interface 是 什么? target 是 什么啊?就这个样子,下面我们进入调试界面,看一下调试的功能, ok, 这时候已经进入到了调试的页面,嗯,在在页面的左边这里的这里分别可以展示你系统的全屏变量,静态变量,然后以及你的通用计算器 等等。嗯,监视,监视的作用,监视的作用就是,呃它可以去看变量的值,但是它的它的缺点是在程序运行的时候,你无法去看它变量的值。呃,如果你要在程序运行当中去看变量的值,类似于 q 的, 呃,那个在现在去看变量的变化了,那么一个功能可以使用这个 livewatch 把变量填在 livewatch 里边,然后去去看它的值的变化,然后这里断点,这你所有打上的断点呢?然后都会在这里显示出来,这时候你可以去删除它,然后或者临时使它失效等等。 调用对战的话就是你系统系统战好,这里是呃调试的功能。 呃,那其实还有一个问题是,呃,我,我们为什么要去 vs code 去用 vs code 加这一套工具链去开发潜水软件呢?呃,我认为使用这套工具链的主要优势有以下几点,第一点是 整个的翻译速度提升巨大,我之前在 q 上使用 a c 五编辑器去去翻译,我带还有库的这个工程的时候,通常都要去翻译两三分钟,但是在在这套工具链下面 去执行变异,就就非常的速度非常的快。然后其次呢就是,呃现在整个 vsco 这边丰富的插件系统,可以很大的提升我们的开发效率啊,其中就包括一些 ai, 像克拉扣, 它可以直接去操作我们的工程,帮助我们完成开发。然后再其次就是,呃,一个比较现代化的一个编程界面, 在大家用习惯这套攻击链之后,它的效率其实是比你用 q 开发效率能高出很多的, 谢谢大家。

嘿,大家好,如果你写过代码,那肯定琢磨过一个问题,咱们写的这些英文字母和符号计算机,他到底是怎么看懂,又是怎么执行的呢?今天啊,咱们就来揭秘一下这个魔法背后的大功臣, gcc 翻译器。 说真的,把它搞懂了,你才算真正摸到了软件是怎么诞生的门道。好,咱们就从这开始,每个程序员都绕不开的经典 hello world, 你 看,这几行代码对咱们来说意思一清二楚对吧? 但是问题就来了,电脑的 cpu 啊,它其实只认得零和一组成的机器码,咱们写的这些 printf 啊 main, 它一个都不认识。那这中间隔着的巨大红勾到底是怎么快过去的呢? 哎,这时候就需要一个翻译官出场了,在咱们编程这个世界里,这个翻译官就叫做翻译器, 它的任务很简单,就是把你写的这些代码原汁原味,并且精准地翻译成机器能听懂的指令。 那么今天咱们要聊的主角就是编程器里头第一把瑞士军刀,它叫 g c c, 不 管你用的是 linux、 macos 还是 windows, 它八成就在你的系统里头默默地帮你干活,可以说,它是你编程路上一个非常非常重要的伙伴。 好,我们来看看今天都要聊些什么。首先,我们会走一遍从原码到可执行程序的完整旅程,看看它背后有哪四大核心步骤。然后呢,我们会打开 g c c 的 工具箱,掌握几个必备的参数,最后再从翻译单个文件升级到怎么管理一个完整的项目。 那么咱们就从一条最最简单的命令开始, g c c, hello, d c 嘎 o hello, 你 看它表面上好像就干了一件事儿,但实际上它背后藏着一个特别有意思的分为四步的流水线, 这就是 g c c 的 四步链金属,它会先做一些准备工作,这叫预处理。然后呢,把代码翻译成一种中间语言,就是翻译, 接着再把这种中间语言转成机器能看懂的格式,这叫会编。最后一步,把所有的零件都组装起来,也就是连接,这样一个能跑的城市才算真正诞生。 你看啊,这张表最有意思的地方在哪呢?它不光告诉了你每一步在干嘛,还给了你好几个暂停按钮,就比如这个 e 或者是 s 参数,你用了它, g c c, 就 会在执行栏那一步之后停下来,这样我们就能亲眼看看每一步的坦悟到底长什么样。 这对于理解底层原理或者排查一些莫名其妙的 bug, 简直是神器。好了,流程我们清楚了,那下一步就是怎么去控制这个流程。 g c c 本身就像一个功能超强的工具箱,我们可以通过各种各样的参数,也叫标志,来告诉它具体要怎么干活。 行,咱们先来看两个最常用的,第一个是杠 o, 你 要是不加这个参数, g c c 翻译出来的文件默认就叫 a d o t, 有 点随便哈,用了杠 o 呢,你就可以给你的程序取个正经名字。 第二个是杠 v, 这个特别有用,当你翻译出问题,或者就是单纯好奇,想知道 g c c 背后到底偷偷摸摸执行了哪些命令,用它就对了,它会把所有细节都给你打出来,这个例子就特别能说明问题, 你看左边,我们没加任何警告,参数翻译很顺利地通过了,但其实代码里有个变量定义了却没用,这是个潜在的隐患。 再看右边,我们只加了一个 fu, a l g c c, 立刻就变成了一位经验丰促的代码审查专家,马上就指出了这个问题。 所以呀,我强烈建议你养成一个习惯,就是翻译的时候永远都带上 wall, 把它当做你代码质量的第一道防线。 另外,当你的程序出了 bug, 需要用 gdp 这样的工具去一步步跟踪代码的时候,千万别忘了加上 g 这个参数,它会把调试所需要的信息都打包进你的程序里。 接下来是优化参数这个东西啊,其实就是让你在编辑花的时间和程序跑起来的速度之间做个选择。 o 零是不优化编域的最快,最适合我们平时开发调试。而 o 二呢,是发布的标准配置,它会多花一点时间去编辑,但能换来程序运行效率的大幅提升。编一个文件,我们现在会了,很简单,对吧? 但是,一个真正的项目,往往是由几十上百个原文件组成的,那这种情况我们又该怎么办呢? 可能你第一反应是简单了,把所有文件名一口气全写上去不就行了?嗯, 对于小项目还行,但你想象一下,一个有上百个文件的项目,你只是改了其中一个文件里的一行代码,结果呢,你得把这一百个文件从头到尾全部重新变异一遍,这种方式很快就会变得慢到让你抓狂。所以,更专业、更高效的做法是四个字,分而治之。 我们用上之前提过的杠 c 参数,先把每一个原文件单独的编辑成一个叫目标文件的半成品,这种文件的后缀名通常是点 o。 这么做的好处是什么呢?你看,如果我们只修改了 micro one 点 c 这一个文件,那么我们只需要重新执行第二步,把它重新编辑成 micro one 点 o, 然后再把所有的 dot o 文件重新连接一遍,也就是第四步, 其他没改过的文件就完全不用动了。在大型项目里,这项就能节省海量的翻译时间,可以说这才是专业软件构建的基石。 好了,现在咱们把前面学到的东西串起来,看看在专业的开发流程里,大家都是怎么做的。 一般来说啊,我们会为同一个项目准备两套不同的变异方案,或者说两套图纸,一套是给我们自己开发测试抓 bug 用的调试版,另一套是最终要交给用户的性能最好的发布版。 我们来看具体的命令。左边的调试版你看,我们加了杠 g, 方便调试优化级别是杠 o 零,这样代码行为才跟我们写得一模一样。当然,所有警告杠 o 也都打开了, 而右边的发布版我们唯一关心的就是性能,所以直接上杠 o 二,全利用化,有时候还会加个杠 d n debug, 把程序里一些调试用的代码给关掉。 当然了,当你把这些命令玩熟了之后,你可能就会觉得每次都要手动敲这么多命令,还是有点麻烦。没错,所以你的下一步就应该是去了解像 mac 这样的自动化构建工具,而它工作的底层逻辑正是我们今天讲的这些 gcc 的 原理, 所以说学到这里,你已经不再是那个指挥点一下运行按钮的初学者了。你现在掌握了把一堆文本变成一个能跑的程序的钥匙,更重要的是你理解了这背后每一步的为什么。 拥有了这些知识,就意味着你拥有了去构建更复杂、更高效也更健壮的程序的能力。那么现在唯一的问题就是,你准备创造点什么呢?

大家好,上次做的这个时间查看期收到了大家的一致好评,看到有位粉丝说他想复刻,而且连续发了三条,今天这条视频就满足一下这位粉丝的需求。我们先梳理一下逻辑,想要实现这个效果,就要确保屏幕正常显示,想要这个屏幕正常显示,就要确保这个屏幕能量, 想要确保这个屏幕能够这样的必要条件就是要确保这个屏幕的背光能量。所以第一步我们先点亮背光。那如何点亮背光?我们就要打开这个原理图来看一下,我们看一下这个 jc 九二零幺的这个显示屏的背光引角, 就这个 l、 c、 d、 b、 l、 k, 它是连接到我们的芯片的哪一个引脚?我们在这边找一下 l、 c、 d、 b、 l、 k 这边可以明显看到 l c、 d、 b、 l、 k 连接到我们的芯片 g p l 八的引脚,所以我们这边直接告诉豆包,我的背光引脚连接到了 g p、 l 八,帮我点亮背光。在这个要求发之前,最好是把这个原理图也丢给他,泡沫表可以不丢,直接把原理图丢给他, 然后他就会帮我们生成代码了。但是我们最好也把自己的编辑环境发给他,我们的编辑环境是什么?是 v s code, 按键是什么?这个尽量发详细一点呐。这边他就会帮我们生成代码,我们直接拷贝这个代码, 我们回到 v s code, 我 们把刚才那个代码直接粘贴到我们这个 v s code 的 给它进行一个编辑,如果编辑成功之后,我们这个版的背光,它应该是会呈现一个背光亮起的一个状态。我们看一下,现在正在翻译。好,我们翻译完成,我们点一下复位键,翻一下, 那现在背光已经明显亮起。同样的道理,我们把剩下的这些引角和芯片对联的关系,比如说这些 c、 s、 d、 c 来给大家移到这边,然后还有什么 s、 c、 l、 k 这些引角,我们的和芯片对联的关系,我们全部发给豆包,然后让豆包帮我们点亮这个屏幕。好了,这个就是豆包帮我们生成的点亮屏幕的一个代码,如果说这个代码正常的话,它会说是红、绿、蓝,然后进行闪烁,屏幕会进行闪烁来我们同样的, 然后靠背过来,然后给它传输。但是要给大家说一下,就是说我们这个引用了一个库,这个就是屏幕的一个库,给大家说一下,然后其他就是我们直接粘贴这个代码就可以了。 然后来看一下我们这个版啊,他如果说成功之后呢,他会黄、绿、蓝进行闪烁,就说明我们这个屏幕点亮成功, ok, 没有问题。好了,接下来我们就提需求,让他把我们那个时间查看器这个程序给他跑起来。 好的,我们进行最后一步实现效果。这个是我和他的聊天记录,就是因为我们上次是做了一个电量检测器的那种,我们现在是做,就是我们现在这个时钟的显示,就是我们时间查看器的一个显示,然后他给我给了一些方向,他都刚开始都比较偏实用,后面我说那个他有一个方向挺好用的,我觉得, 然后我让他写了一下代码,但是我感觉实现起来不好玩,然后我就给他提了一个要求,大家看一下,就是说加入了一个什么按键去优化波动的案案例,然后按键播的越快,然后指数就转的越快,这个就是我们这个 就是我们现在的这个一个的雏形了,已经大概有这么一个雏形了,再加上一个手机查看时间之类的这么一个设想。然后我让他帮我优化,他觉得,然后也觉得我这个有点意思,但是他这个肯定是在奉承我。 然后再和他聊,聊了一段时间,他说写写了一些比较详细的一些问题,就是一些需求大家可以看一下,然后他问我一些表盘风格或者指征长什么样,然后告诉他要什么科技感,对吧?然后三根指征,然后他帮我生成了一个代码,然后我试了一下这个代码的话,他 就是说他是匀速转的,就是我们现在转的话会越转越快,他现在就是匀速转的,我觉得并不好,然后我就让他再去弄一下,弄一下,然后前前后后也就修改了很多次,然后到后面,然后最后这个就是让他帮忙生成的。大家应该可以看到我换了一个,为什么?因为大家说我老麻烦,都把我想了一下,这样也不好, 然后我就换一个 i 去写,我我想说的是思路很重要,就是和 i 聊天的话,就是要给他一些比较准确的信息,然后你确定知知道你自己想要什么,这个我觉得是最重要的,然后那就让他写喽。写完之后,然后我就把这个代码下载下来, 然后咱们传到这个 vs code 里面给大家看一下效果,然后这个就是他帮我生成的代码,所以想复制一下,然后我们把他以前的旧代码给他删掉,然后粘贴 存一下,然后同样的进行烧录。为什么这次不用豆包呢?就是想换着用。当然了 i i 之间肯定是有差异的,但是豆包是我们接触到最方便的一个 i i, 其他 i i 的 话,它可能你要配置下网络,对吧?懂的,都懂,大家都知道, ok, 出来了,那这个就是我们最后的成品了。

今天给大家看一下我做的这个水平仪啊,就是用了一个单片机的芯片,然后加了个陀螺仪,再加个屏幕就搞定了,你看还有修正算法,哎呀,不得了, 现在的陀螺仪的算法真的是太牛了,以前我们做的时候呢,那个数据都乱七八糟的,根本就没有办法用,你看现在这个多稳啊。 哇塞,这玩意可以哦,之后分享制作过程,跪求点个赞,关个注,转个发,万分感谢!

你是不是还是只会点击这个三角形来运行 c 元程序呢? what? 这个三角形它只是我们这些高级开发工具里边所带的这种快速运行的方式,那如果没有这个三角形,那我们的 c 程序要怎么才能去运行呢? 哎,这样的话,我们就得认识一个好帮手了,它叫 g c c, 它是由 g a u 开发的编程语言,编一起,那么它的主要作用呢,就是能把咱们写的 c 语言代码翻译成电脑能看懂的机器语言。哎,它就是一个超级翻译官,那怎么去用呢?好,我们来看一下,在这个地方,我们里边有一个 hello 点 c 的 文件,这个代码呢,非常简单,就是做了一个 hello word 的 输出, 我们想运行它呢,哎,我们只需要在上边儿打开这个 c m d, 输入 c m d, 打开我们的命令行窗口。但是大家注意,在这个之前呢,你是需要去配置并且安装这个 g c c 的, 安装之后呢,还需要配置 g c c 的 环境变量哟, 好,在这里边呢,我们输入 g c c hello, 点 c, 带上我们这个名字,然后点击回车键,然后我们就可以看到,在我们的文件夹里边呢,它帮我们生成了一个 a 点 ex 的 文件, 这个就是默认的,在我们 windows 系统下边,它默认给我们生成的可执行程序的名字就叫 a 点 exe, 那 么如果在 linux 系统之下,它生成的可执行文件就叫 a 点 out。 好, 然后我们在这个地方呢,把这个生成的 a 点 exe 的 这个文件名字输上去,点击回车键,我们就可以看到这个 hello world 就 输出了。 啊,这就是 gcc 的 方式进行运行这个 gcc 的 方式呢,也是大家都要掌握住的方式,你不能只会一个三角形,那么这样呢,它如果说每次都给我生成的文件名都叫 a 点 e x e, 那 这样的话,它的辨识度就不够高。哎,我们可以在 gcc 的 命令里面去加上一些参数,比如说我们加一个 gcc 杠 o 哎, hello 点 c, 然后呢我们中间再给它加上一个 hello, 这相当于什么意思?就是把 hello 点 c 呢编以后的文件不叫 a 点 e x e, 而是叫做 hello 点 e x e, 我 们可以看一下这个效果好,那么在这个地方呢,我们就看到一个文件叫做 hello 点 e x e, 然后我们运行它 hello 点 exe 回车,哎,我们同样看到一个 hello world 的 这个输出啊,那所以说呢,这个关于 g c c 命令啊,它里边还会有很多这个相关的,呃,参数啊,还会有很多相关的参数,比如说我这边给大家这个表格里边放了一些啊,杠 o 啊,杠 c 啊,杠沃啊等等很多这个相关的参数。 呃,这个东西呢,大家可以自行观察一下啊,了解一下。好,那这期内容我们就到这里,下期再见呦。

芯片架构类型这么多,叉八六 arm with five mips, 你 有没有想过,同样一份 c 或 c 加加代码,为什么变异之后竟然能在不同架构的开发板上运行?要知道不同 cpu 的 指令级是完全不一样的,这背后的关键是一种叫做交叉变异的技术。 比如在叉八六的电脑上,我们可以用 gcc 变 e c 语言程序,在 arm 开发板上, 我们也能用 gcc 编一 c 语言程序,但这两个 gcc 其实不是同一个,它们分别针对 x 八六和 am 生成对应的机器码,所以编出来的程序不能互相直接运行。那么到底什么是交叉编呢? 简单来说,就是在 a 机器上编一生成能在不同架构的 b 机器上运行的代码,不在你的 x 八六电脑上编一个程序, 让它能直接在 am 板子上或 v 5 的 设备上顶上,错的好处非常明显,开发效率高,不用在资源有限的嵌固设备上安装完整的编印环境。以上是对上期内容的填坑,其实引出了一个新的话题,怎么设计多平台代码? 下期我们实操通过交叉编艺术,多平台架构的优步特代码运行在开发板上,我们下期见。

我昨天开发这个 c c 二五三零芯片真的被坑惨了,驱动它的这个蜂鸣器一直不响,我就检查代码嘛,然后检查好多遍代码也没有问题,然后电路感觉也没有问题,我一开始都以为是我程序写错了,但检查了半天才发现原来是这个原因 就是我翻了翻了一下手册,我才知道就是它上面写着,呃, c c 二五三零的芯片,其他的 i o 口都是只有四毫安的驱动电流能力,但只有 p 幺零和 p 幺幺这两个 i o 口有强驱动能力,也就二二十毫安,我们可以从手册中看到。 所以说大家一定要提个醒,就比如说我们之前开发 c c 五幺、 stm 三二这种芯片的时候,我们总是喜欢 习惯于去,就直接给他一个 i o 去置一个高电瓶或者低电瓶,就希望他能驱动一个东西,但实际上我们还要考虑他 i o 口的驱动能力。对,所以大家开发前写代码前一定要查好数据手册。

大家好,这节视频呢,我们来学习一下在 desktop 系统下如何翻译并运行一个 qt 的 应用程序。 首先呢,我们打开 f two 开发版的快速使用手册,找到 desktop 系统翻译并运行 qt 应用。这一节,在嵌式例子系统中,如果要翻译 qt 应用程序的话,通常是需要配置 qt 的 交叉编辑器。 但对于无斑图或者是德边这类发行版的 leux 系统呢,我们可以直接在板卡上安装 qt, 并利用板卡自带的 gcc 进行翻译。 这里需要注意的是,板卡上是只能完成翻译和运行的,是无法进行调试的。如果大家有调试的需求的话,可以在 windows 或者是开发环境里面安装和板卡相同版本的 qt 来进行调试。 实际上呢,对于简单的 q t 应用,我们是可以直接在板卡上进行翻译,那本节视频就不再演示这种基础的操作了。 而对于复杂的应用呢,我们是建议在开发环境里面,通过 c h 柱的这种方式,调用开发版文件系统里面的编辑器来完成翻译,再部署到开发板上去运行。 下面我们就按这种方式,以 hello world 的 测试历程为例,完整地演示一下整个的过程。 hello world 的 测试历程呢,在我们的 f two 开发版资料包里面,教程文档 q t 应用编程 q t 历程源码,这个就是 hello world 的 历程源码,我们把它复制到共享文件夹里面, 也就是我们前面设置的 linux 源代码。这一个目录复制完成之后呢,我们打开虚拟机,进入到 sdk 源码的目录下面,打开一个终端, 首先我们进入到跟文件系统所在的目录,也就是五班图的这个目录下面,这个呢就是 desktop 系统跟文件系统的一个镜像文件。接下来我们再创建一个挂载点,比如说叫做 roof, 下面我们把跟文件系统的镜像挂载到 roof 这个文件夹的下面, 输入密码 off, 这样就挂载成功了。挂载成功之后,我们进入到挂载点, 这里呢就是开发版完整的一个根文件系统了。接下来我们把要编辑的 q t 的 工程拷贝到文件系统的 root 这个目录下面, q t 的 工程我们已经提前放在了共享文件夹里面,我们直接拷贝就可以了。 共享文件夹的路径 q t 的 工程到 root 这个目录下, 大家注意我们拷贝文件夹的话,需要加上一个杠 r 的 参数回车,这样就已经拷贝成功了。接下来我们进入到 c h root 这个环境, 我们可以通过命令行的提示符判断,我们已经进入到了开发版的一个文件系统。接下来我们进入 qt 工程里面, 下面呢我们就需要使用 qt 的 构建工具 qmake 来生成 makefill, 我 们执行 qmake qmake, 它会根据这个点 p r o 的 工程文件自动生成 make feel, 我 们可以看到已经生成了 make feel, 生成 make feel 之后,我们执行 make 来进行翻译, 现在已经开始翻译了,我们等待翻译完成, 现在已经翻译完成了,翻译过程的信息是很多的,如果中间没有出现报错的话,说明就翻译成功了。翻译成功之后,我们 l s 看一下,这个呢就是 q t 的 一个可执行的文件,我们用 flow 命令查看一下, 可以看到它是 em 架构的,是可以在开发板上去运行的。接下来我们 ctrl d 退出这个 chroot 环境,回到我端图的命令行,下面接下来我们把编好的应用程序传输到开发板上面,这里的话我使用 s c p 网络传输 速度, s c p 要传输的文件 传输到开发版的 elf 用户, ip 地址是幺九二点幺六八点零点二三二,传输到开发版的 home elf 目录下面我们回车输入 elf 用户的密码, elf 回车 可以看到已经传输成功了,下面我们退出挂载的目录,然后取消挂载, 这样就已经取消挂载了。我们打开窗口的终端,我们先登录一下系统,以 f 用户来登录,可以看到我们现在就是在 home f 这个目录下面, 在这个目录下面有了我们传输过来的文件,在执行之前呢,我们先给这个应用一个可执行的权限, 输入 f, 下面我们去设置环境变量, 设置完之后我们去执行 qt 的 应用, 可以看到我们的屏幕上已经显示出来了 q t 的 界面。以上呢就是 desktop 系统下编并运行 q t 应用程序的完整的流程。

这个问题百分之八十的自学新手都不会,你是不是也经常出现这样的问题呢? gcc 不是 内部或外部命令,也不是可运行的程序或批处理文件,但这个 gcc 也可以换成 java、 python 等等。那么这里边假如说现在我们这里边有一个文件夹,我们有一个 hello 点 c 的 文件,现在我们需要把这个 hello 点 c 的 文件运行一下,那么我需要把它先编一下,编成我们的可执行程序 好。那么一般的操作是我们在这需要敲一个 g c c, 然后敲上一个 hello 点 c, 然后呢他就给我们报道了一个这样的错误, g c c 不是 内部或外部命令。好,这个问题就是由环境变量所造成的。首先我们要知道你在这个位置敲上一个 g c c, 它的作用是什么?它是为了找到一个名字叫做 g c c 点 exe 的 执行程序。 那么在找这个程序的时候呢,我们举一个形象的例子,就相当于是你点了一份外卖,外卖员想把外卖送到你的手里,我同样道理,我是不是也得知道这个 g c c c 点 exe 这个程序在哪里, 那么默认情况下他是不知道的,所以这种情况下就需要我们去配置一下这个环境变量好,首先呢我们需要找到我们的 g c c 的 安装目录,那么我的安装目录呢,在这个位置 一盘 app 命名 w b 目录,里边我们给大家看一下,在这里面呢,我们可以很明显的看到有一个 g c c 点 excel 这样的可执行程序,那么接下来呢,我们要把这个可执行程序,把它的路径给它配置到环境变量中去,非常简单,把这个路径 ctrl c 粘出来,然后呢,我们在这个位置输入 环境变量,编辑系统环境变量。好,在这个系统环境变量里边,我们点击环境变量,找到下面这个系统环境变量,找到我们的 pass 路径,点击新建,在这里边呢, ctrl b, 哎,我们把我们的这个并目录能找到 g c c 点 exe 的 这个并目录给它放进去,然后点击确定,确定,确定,哎,我们给它一路确定下来,然后呢, 注意,因为我们改的是环境变量,所以说我们要把这个命令行窗口给它重新打开一下,在这位置我们再次进入 c m d, 然后在这位置我们再来输入刚才的命令, g c c hello 点 c, 好, 那么大家先来看我是不是就能把这个 hello 点 c 编成了一个 a 点 ex 的 可疑程序,这样的话,经过环境编的配置,我们就把这个 g c c 路径查找不到的问题给解决掉了。 nice, 好, 那么同样道理, g c c 是 如此, qq 也是一样,比如说我想在这个位置我敲一个 qq, 哎,你看,告诉我, qq 不是 内部或外部命令,也不是可运行的这个程序。那么接下来呢,我们就要找到我们的 qq 的 安装目录,比如说这里边,好,找到我的这里,我的这个 qq 在 这个位置安装腾讯 qq, 打开 b 目录,好,往下翻,我们可以找到一个文件,叫做 qq 点 exe 在 这个位置,那么现在我们需要把这个路径 ctrl c, 同理,我们再次打开环境变量,点击环境变量,点击系统里边的 pass, 点击新建,然后把我这个粘进去,点确定,确定好,确定。那么同理,因为改了环境变量,所以我们应该把这个密钥窗口呢,要给它进行重新启动一次。好,那接下来我们再次打开这个,随便啊,接下来就可以随便开一个这个 cmd 这个密钥窗口,然后在这个密钥窗口里面我们接入 qq 扣圈。好,大家可以发现我们这里面已经报错了,并且呢我的 qq 也已经做了一个启动,那这个就是我们环境变量的核心。 nice, 再给大家总结一下,它主要的目的就是给电脑设置一个寻人启事啊,就是把我们可执行程序的路径配置到电脑的环境变量里边去,这就是环境变量。你们以后碰见什么? q, 这个 qq 啊,微信啊, 或者说 python, java 啊, c 语言啊, c 加加啊等等,类似于这样的启动程序都可以通过这种方式进行配置。好,你学会了吗?我们下期再见。

你点一下翻译背后至少四道工序,搞懂他们那些未定义引用的报错就不再是天书。第一道预处理,处理所有井号号开头的指令井号应库的,把整个头文件贴进来,井号递范,把红权替换掉,井号 ifif 决定哪段代码留下,完事得到一个纯 c 文件,红消失, 头文件展开,你可以用 g、 c、 c、 e 亲眼看看它长什么样。第二道翻译,把 c、 c、 e 翻译成会编,不同芯片架构出来的会编不同语法,检查类型,检查优化全在这部,报了未声明的变量就卡在这。第三道会编,把会编转成机器码,生成欧目标文件,这个文件里还有空白, 调了 print, 但 print 在 哪不知道。先留个符号等着。第四档链接,把所有 o 和库文件拼一起,链接器拿着链接脚本,按你指定的内存布局,把代码段放 flash, 数据段放 i a m, 然后到处填空没 no o 里留的 print 符的坑。去 c 库找到 print, 填上地址。 所有跨文件的函数调用全在这一步,对号入座。如果某个符号在所有地方都找不到,就报未定义引用全在这一步,对号入座。如果某个符号在所有地方都找不到,就报未定义引用全在这一步,对号入座。如果某个符号在所有地方都找不到,就报未定义引用芯片不认识, 最后还要用工具把它转换成 biff, hex 才是真正能烧进 flash 的 镜像。四道工序,像流水线,上到产出是下到原料。再补一句,嵌入市里。别光看代码,学会看链接脚本和 map 文件。你的内存怎么布局的,全写在那里面。