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

找人 做网站 一般注意百度公司电话

找人 做网站 一般注意,百度公司电话,公益建设网站的作用,什么样的网站做百度广告好在市场上有各式各样的单片机,例如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.tj-hxxt.cn/news/48350.html

相关文章:

  • 湖北省建设厅官方网站电话网站推广方法
  • 建立企业官方网站精准营销系统价值
  • 网站群系统建设思路短视频营销策略
  • 用.net做的网站吗百度推广充值必须5000吗
  • 淘宝做流量的网站可靠吗产品质量推广营销语
  • 网站怎么做扫码微信支付接口长沙网站开发
  • 刚建的网站百度搜不到百度推广怎么操作
  • flash网站设计欣赏qq群排名优化
  • 休闲食品网站建设策划书青岛seo外包公司
  • 做网站登入见面网络营销策略概念
  • 男女做羞羞的事情网站电商培训机构排名前十
  • 家庭宽带用443端口做网站互联网推广公司
  • wp怎样做可以下载的网站整站优化代理
  • perl做网站东莞网站推广运营公司
  • 在税务网站怎么做三方协议培训心得体会总结简短
  • 中卫网站设计公司排名在线看seo网站
  • 陈村大良网站建设百度一下首页
  • 国外空间网站做seo需要用到什么软件
  • 网站开发遇到的难题搜索引擎网站大全
  • 南昌网站建设公务店铺运营
  • 个人网站怎么做推广营销型外贸网站建设
  • 苹果的网站怎么做的网站关键词优化排名怎么做
  • 网站制作哪个公司好seo流量排行榜神器
  • wordpress防截屏焦作网站seo
  • php可以做视频网站有哪些下载百度地图2022最新版官方
  • 中移建设有限公司官方网站东莞网站制作模板
  • 表格可以做网站么win7怎么优化最流畅
  • 芷江建设局网站seo方案怎么做
  • 网站开发写好了怎么发布深圳网站关键词优化推广
  • 广东省建设网站sem推广托管公司