当前位置: 首页 > news >正文

整站优化费用宁远做网站msoer

整站优化费用,宁远做网站msoer,椒江网站制作,建设充值网站多钱在市场上有各式各样的单片机,例如Arduino,51单片机,STM等。通常,我们都用其对应的IDE软件进行单片机的编程。这些软件既负责将程序代码转写成二进制代码,即机器语言,也负责将该二进制代码导入单片机。与此同…

在市场上有各式各样的单片机,例如Arduino,51单片机,STM等。通常,我们都用其对应的IDE软件进行单片机的编程。这些软件既负责将程序代码转写成二进制代码,即机器语言,也负责将该二进制代码导入单片机。与此同时,有一个开源软件,叫做Avrdude,可以将二进制代码程序写入各个品牌的单片机中。该项目在Github上,支持Windows、MacOS、以及以Linux为内核的系统[1]。这是由于许多单片机的公司的产品是开源的,也就是说将二进制程序代码写入单片机的报文是公开的,所以有这样的电子工程师将这些写入的报文做成程序供大家使用。

本文通过分析Avrdude的源代码,大致了解一下二进制程序代码写入单片机的过程,即报文格式,帮助读者进一步了解单片机的工作原理。通过了解这些内容,有助于开发第三方软件进行单片机的编程。开发第三方软件的意义有,例如,有的人认为现有的单片机IDE程序太复杂,想设计一个简单的,易用的版本,只包含基本功能即可;另外,也可以将单片机的IDE程序移植到其它的平台,如鸿蒙,安卓,甚至一些小众的操作系统和平台上。

一、Avrdude的基本操作

Avrdude可以作为Linux的控制台程序,其运行的命令形式大致为[1]:

avrdude -c <programmer> -p <part> -U flash:w:<file>:i

如:

avrdude -c arduino -P COM1 -b 115200 -p atmega328p -D -U flash:w:objs/blink.hex:i

详细说明见[2]。简单地说,-c 后面跟单片机的类型,-P后面跟传输的串口号,-b后面跟波特率,-p后面跟具体的型号,-U后面跟需要写入的单片机内存、是写还是读、二进制代码文件、格式。

从该句的大意可以看出,把程序写入单片机的过程,本质上说是把二进制程序代码写入单片机的某个内存中。这个内存通常是flash或eeprom。关于flash和eeprom的区别,见[3]。

二、源程序的分析

注:该源代码包里包含多个文件,经常出现一个函数或常量的定义在另一个文件中的现象。所以为了分析方便,强烈建议用支持在文件夹里从多个文件中搜索关键词的功能,且支持多视图的软件。例如NotePad++[5] [6]。若要用iPad阅读代码,推荐Code App[7]。注意要在设置里打开以下选项,启用多视图功能。

一个用C语言写的程序,运行时,通常从main函数开始。而通过命令行运行程序时,输入的程序名以及参数,会被传递到main函数的参数中。具体的说明,见[4]。

所以,在这里,main函数在src目录下的main.c中

当通过命令行运行avrdude时,"avrdude","-c","arduino"等字符串都会传递到argv中。

这里观察一下main函数中处理这些参数的方式。

这里,重点研究-U后面的参数,即写入的单片机内存和二进制代码文件。从程序中可看出,这些参数都被赋给了upd指向的对象的属性中。

通过阅读代码,可知写入芯片的过程是由do_op函数进行的。经搜索,这个函数的定义在update.c中。

这里,upd->op应该是DEVICE_WRITE,即把文件里的内容写入单片机的内存。

这里涉及到两个重要步骤:第一个,是把文件的二进制代码提取到程序中,由函数update_all_from_file进行;第二个,是把二进制代码写入单片机的内存中,由函数update_avr_write进行。

下面分析这两个函数:

1. update_all_from_file

最终,在fileio_rbin中,mem被更新了。

这里,mem->buf被填充了文件里读出的二进制代码。因此,mem就携带了要上传给单片机的程序。

2. update_avr_write

avr_write_mem用于将报文传入单片机。

观察avr_write_byte函数

该函数用于将字节写入单片机的指定内存,即地址。其具体实现方式,不同的单片机会有不同,这里以其中一款为例。

这里,cmd[0]代表地址,cmd[1]代表输入的字节。

serial_send函数,即通过串口把内容从电脑上传至单片机的函数,实现方式和操作系统有关。目前,windows系统和POSIX即Unix内核的系统的串口实现方式在该代码包中已实现。HarmonyOS NEXT系统将使用鸿蒙自己的内核[7],可能和windows及Unix均不同,所以如要把该程序移植到鸿蒙星河版上,这一部分的实现可能需要重新编写。

三、其它方面的研究

用这样的分析方法,可以研究不同的单片机的各内存的地址,以及从单片机中读取内容的过程等。

链接

[1]https://github.com/avrdudes/avrdude/tree/main

[2]AVRDUDE: 2.1 Option Descriptions

[3]嵌入式开发——EEPROM和FLASH的区别和优劣势-CSDN博客

[4]【Linux】命令行参数_命令行参数的使用linux-CSDN博客

[5]notepad++ 根据文件内容查找文件_notpad++ 查找 文件小于100k-CSDN博客

[6]Notepad++使用教程_nodepad++-CSDN博客

[7]华为鸿蒙内核成为 HarmonyOS NEXT 流畅安全新基座 - IT之家

http://www.yayakq.cn/news/597693/

相关文章:

  • 企业做网站公司哪家好wordpress使用七牛cdn
  • 做国外百科知识网站中国商标网官方查询
  • 做淘宝链接的网站vue 网站开发
  • 搜狐做网站企业建站找哪个公司
  • 建设银行网站查询密码林业厅网站建设招标
  • 汽配信息门户网站模板游戏推荐网站怎么做
  • 企业网站的一般要素包括wordpress头像官网
  • 上海网站建设过程谷歌字体插件WordPress
  • 个人备案做电影网站吉林关键词优化的方法
  • 网站开发 毕业答辩ppt网站首页置顶是怎么做
  • 好看网电影网站模板免费下载微信网站二次开发
  • 衡水做网站优化做美容仪器的网站
  • 响应式网站和自适应网站区别怎么做百度快照让网站排前面
  • 东莞旅游网站建设35互联做的网站
  • 佛山专业网站营销建设一个网站需要多久多少钱
  • 做奢侈品代工厂的网站海外打开网站慢
  • 织梦网站怎么搬家网站开发需要用哪些东西
  • 东莞市做阀门的网站sem是什么意思中文
  • 阿里云做的网站怎么样wordpress用户登入界面
  • 个人淘客网站备案介绍网络营销的短文
  • dede模板网站教程软件企业网站模板
  • 高端定制网站鞍山做网站企业
  • 桂林北站附近有什么好玩的简述网络营销的八大职能
  • 网站结构怎么分析用阿里云建设网站
  • 有哪些公司的网站做的很好看电信备案新增网站
  • 河南建筑公司网站北京正规网站建设公司
  • 图案设计网站有哪些wordpress为图片添加圆角
  • 国家建设部官方网站赵宏彦wordpress会员密码有效期
  • 上海金山网站设计公司wordpress获取当前网址
  • 简单网站建设流程网站建设中源码