pic18f67j60单片机 能用网络远程升级自己的程序吗

pic18f67j60单片机 能用网络远程升级自己的程序吗,第1张

不能吧。自编程需要具有IAP功能的单片机( IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级)STC的IAP15系列可以通过串口升级自己的程序

;   摘要 本文介绍了在Windows平台下串口开发的方法 并给出一个使用Delphi设计的远程数据采集的实例 引言在工业生产实践中 使用PC机对Inprise公司推出的Delphi是一种功能强大的高级编程语言 其具有可视化面向对象的特征 特别适合Windows平台下的图形界面和用户程序的编制 本文就介绍在Windows平台下用Delphi开发串口的方法和使用Delphi设计的一个实现远程串行数据采集的实例 串口工作原理及软件实现方法串口进行通信的方式有两种 同步通信方式和异步通信方式 同步通信方式要求通信双方以相同的时钟频率进行 而且准确协调 通过共享一个单个时钟或定时脉冲源保证发送方和接收方的准确同步 效率较高 异步通信方式不要求双方同步 收发方可采用各自的时钟源 双方遵循异步的通信协议 以字符为数据传输单位 发送方传送字符的时间间隔不确定 发送效率比同步传送效率低 在Windows平台下 Win API支持同步和异步两种I/O *** 作 同步 *** 作的方式的程序设计相对比较简单 但是I/O *** 作函数在I/O *** 作结束前不能返回 这将挂起调用线程 直到I/O *** 作结束 异步 *** 作方式要相对复杂一些 但是可以让I/O *** 作在后台运行 而不会挂起调用线程 这在大数据量通信情况下对改善调用线程的响应速度是相当有效的 同时由于Win x和WinNT下对串行通信的处理不同 这就导致了在Win x下开发的同步方式串行通信程序在NT下会发生工作线程之间的协作阻塞 即当读线程在等待WaitCommEvent的时候 写线程不能正常工作 停在那里 整个程序处于瘫痪状态 这个问题是Windows的API函数处理串行通信的一个BUG 所以对于适应性强的程序都是选择异步方式 下面 本文对在Windows平台下对串口进行开发的方法进行介绍 . 汇编程序直接读写串口汇编语言的编译效率和执行效率都很高 使用汇编语言直接对串口进行 *** 作可以部分弥补串行通信速度较慢的缺陷 具体做法是 用汇编语言编写读 写串口的函数 在通信程序中直接调用 或者在Delphi中直接内嵌汇编程序进行对端口的读写 例如 a   mov dx h  mov ax eh  int h end ; 这样可以达到直接读到端口的效果 但是在WinNT和Win 下 系统使用了保护机制 不允许用户态的程序直接读取端口 所以在WinNT和Win 下 这种方法不能被允许执行 Ring 的用户态的程序要进入Ring 去读写端口必须先提供一个驱动(sys)程序 然后通过DLL导出函数供用户程序调用 显然 这种方法比较不容易实现 . 使用API函数进行串口编程Windows系统通信一般都以WOSA(Windows Open Service Architecture 即Windows开放式服务体系)模型为基础 在此模型中位于上层的应用程序通过调用各种通信API(Application Programming Interfaces 即应用程序接口)与位于下层的设备驱动程序进行数据交换 在Windows平台下 Windows将设备看作是文件进行管理 对设备的 *** 作也可以看作是对文件的 *** 作 Win API提供了CreateFile() WriteFile() ReadFile() WaitForSingleObject() WaitForMultipleObjects() CreateEvent() CreateMutex() CreateSemaphore() CreateThread()等函数 其基本步骤如下 ( ) 利用CreateFile()函数打开串口 该函数有七个参数 其中dwCreationDistribution参数取OPEN_EXISTING 表明打开的串口对应于实际的物理串口 lpFileName参数是要打开的串口名称 如 DwFlagsAndAttributes参数决定对串口的 *** 作是同步 *** 作还是异步 *** 作 DwDesiredAccess参数是访问方式 可取GENERIC_READ或GENERIC_WRITE DwShareMode参数是共享模式 对串口物理设备必须取 LpSecurityAttributes参数是安全属性 取值为NULL DwFlagsAndAttributes是文件属性和标识 一般取值为FILE_ATTRIBUTE_NORMAL 该函数返回串口 *** 作的句柄 ( ) 对该串口句柄对应的设备进行配置 如波特率 数据位 停止位 是否奇偶校验等 这部分首先使用GetCommState()函数得到当前的串口配置信息 将这些信息存放在一个DCB结构中 然后对该DCB结构里面的内容进行重新按要求设置 最后调用SetCommState()函数使修改的设置生效 ( ) 配置串口事件 SetCommMask()函数可以设置多个串口信息事件 其串口的信息事件可以是以下任意的组合 EV_BREAK 在输入时Windows检测到中断 EV_CTS CTS信号改变状态 EV_DSR DSR信号改变状态 EV_ERR 发生线状态错误 EV_RING 检测到振铃指示 EV_RLSD 接收线信号探测状态发生改变 EV_RXCHAR 接收缓冲区里收到字符 EV_RXFLAG 收到事件字符 并放入接收缓冲区 EV_TXEMPTY 输出缓冲区空     ( ) 创建串口监视线程监视串口事件 首先使用WaitForSingleObject() WaitForCommEvent() WaitForMultipleObjects()等等待函数对线程进行控制 当没有数据收发时 将线程阻塞 减少其CPU的资源占用 当有数据收发时 线程自动启动 完成数据的收发 最后调用CreateThread()函数启动线程 ( ) 串口使用结束 用CloseHandle()函数关闭串口 回收资源 由此可见 利用Win API函数编写串口通信程序比较复杂 需要掌握大量的系统和通信知识 其优点是实现的功能强大 应用面广泛 适合编写较为复杂的地层次应用程序 lishixinzhi/Article/program/Delphi/201311/24926

空中下载技术(Over-the-Air Technology; OTA),是通过移动通信的空中接口实现对移动终端设备及SIM卡数据进行远程管理的技术。经过公网多年的应用与发展,已十分成熟,网络运营商通过OTA技术实现SIM卡远程管理,还能提供移动化的新业务下载功能。

简述

OTA(英文:Over-the-Air-Technology)即空中下载技术,通过网络自动下载升级包、自动升级。OTA技术的应用,使得移动通信不仅可以提供语音和数据服务,而且还能提供新业务下载,是一种更快的无线技术。它重点解决了一个空间距离的问题,也就是用户不再需要把车开到4S店,在任何一个有网络的地方就可以解决部分问题。

通常情况下,OTA更新内容要经过厂商的反复测试之后封装,云端服务器通过蜂窝网络与车辆建立连接并且传输文件,车上的OTA Manager会负责管理这些更新文件,确认什么时候把他们下发给负责各个模块的ECU控制单元,并且在更新完成后向服务器反馈。

目前常见的OTA升级还是针对多媒体系统,如导航、娱乐、舒适性配置等,只有像特斯拉等个别厂商才会对驾驶辅助、动力单元控制等进行升级。

原理

要实现OTA功能,至少需要两块设备,分别是服务器与客户端。服务器只有一个,客户端可有多个。服务器通过串口与PC机连接,需要下载的镜像文件存放于PC机,命令执行器给服务器发命令及镜像文件。首先命令执行器控制服务器广播当前可用的镜像文件信息,客户端收到信息后进行对比,若有与自身相匹配的镜像,则向服务器请求数据。服务器收到请求后向命令执行器索取固定大小的块,再点对点传送给客户端。镜像传输完毕后,客户端进行校验,完成后发送终止信号。

SOTA与FOTA的区别

汽车FOTA是可以通过网络来更新车辆的固件系统,其中包括但不限于控制发动机、电动机、变速箱、底盘悬架等核心零部件的控制系统。FOTA里的f代表的是固件(Firmware),在SOTA的基础上,通过网络来更新固件系统,实际上,OTA升级的确分为FOTA和SOTA两种。FOTA即全车升级,指包括这辆车的核心系统在内的所有系统都可以升级。而SOTA指软件升级,就是除了车子的核心系统外的其他系统可以升级!

FOTA的本质是固件升级,包括驱动、系统、功能、应用等的升级,和硬件没有直接关系。适用的终端范围很广,基本可以为市场上所有的终端提供升级服务,无论对于电信运营商还是终端设备制造商,通过集群应用、网格技术和分布式服务端,能够在同一时间内处理大量用户的终端升级需求。FOTA和OS的关系较为密切,不同的OS版本,需要开发不同的FOTA适配版本,同时通过FOTA模块下载的系统升级包,也要和OS进行密切的匹配,不但要进行硬件驱动的调试,还要进行版本的兼容测试。但这样的升级包一般由终端厂商提供,FOTA更多的是保证将升级包下载,并且安装至终端,在智能时代,FOTA云升级将成为智能终端的标准配置。

FOTA能带来整车车机系统级别的升级,是一种高于OTA的车机软件更新功能。FOTA泛指远程车辆软件升级,是判断智能电动汽车的一大重要指标。拥有FOTA能力的车辆将能够:对车辆电子控制单元(ECU)、车机系统固件等升级;用户无需前往线下服务中心或连接外部设备;通过云端即可获取升级包并进行升级更新,实现功能的快速迭代,以及车辆使用体验、驾驶体验的不断优化。

简述 原理 SOTA与FOTA的区别 @2019

理论上来说,只要可以传输数据,就能升级。首先你要自己写一个stm32的boot程序,这个boot程序用来接收wifi串口的固件,然后把固件写入到stm32的flash中,当写入完成后,把sp指针指向你写入固件的首地址,也就是app地址,然后执行就可以了,这就完成了下载程序。

注意app的首地址不能踩到boot的地址,要合理分配flash空间。

您好,非常抱歉听到您遇到了串口服务器无法下载和上传的问题。这可能是由于多种原因引起的,以下是一些可能的解决方案:

1检查串口服务器的连接:首先,请确保您的串口服务器已正确连接到计算机或网络,并且已正确配置。您可以尝试使用其他设备连接到同一台计算机或网络,以确定问题是否出在串口服务器上。

2检查串口服务器的驱动程序:如果您的串口服务器需要安装驱动程序,请确保已正确安装并更新了驱动程序。您可以尝试在设备管理器中查找串口服务器,并检查其状态是否为“正常”。

3检查串口服务器的设置:请确保您已正确配置串口服务器的设置,例如波特率、数据位、停止位和校验位等。这些设置应与您的计算机或网络的设置相匹配。

4检查串口服务器的固件:如果您的串口服务器使用固件,请确保已正确安装并更新了固件。您可以尝试在串口服务器的官方网站上查找最新的固件版本,并按照说明进行更新。

5尝试使用其他软件:如果以上解决方案均未解决问题,请尝试使用其他串口服务器软件。这可能会帮助您确定问题是否出在软件上。

希望这些解决方案能够帮助您解决问题。如果您仍然遇到问题,请考虑联系串口服务器的制造商或技术支持团队以获取更多帮助。

可以采取以下措施解决问题:

1、更新驱动程序:CH340常常需要使用Windows自带的驱动程序,而由于Windows系统更新频繁,驱动程序很可能会过期。建议您前往CH340官方网站下载最新的驱动程序,安装后再连接串口设备,看是否能解决刷新问题。

2、更换USB线:如果驱动程序已更新,但还是出现CH340串口经常刷新的情况,可以考虑更换USB线。有一些低质量的USB线可能存在不良连接问题,导致数据传输不稳定。

3、更换串口设备:如果以上方法都无法解决问题,说明可能是串口设备本身出现了问题,建议您更换一个可靠的串口设备。

4、检查串口设备工作环境:如果串口设备在工作时,周围环境突然发生变化(如电压幅度过大或过小、电磁干扰、接口松动等),也会使串口设备经常刷新。此时您可以临时离开该工作场所,或维护周围环境,以减少这些变化的影响。

一、引言

一般情况下,我们都是利用软驱或光驱引导Linux后,再通过本地的光驱安装Linux。但是,这种安装方法在以下的几种情况下就不能适用:

无软驱和光驱:很多公司为了节省成本,计算机一般都不带光驱或软驱,这样就无法通过本地安装Linux;

非标准的软驱和光驱:虽然笔记本都会配置光驱,但是并不一定都是标准的IDE设备,有些是通过USB接口,有些是通过1394接口(例如Samsung的Q10)。在Linux安装时所引导的Linux内核一般都不会带这些接口的驱动,所以也无法通过本地安装Linux;

另外,在一些场合,如机房中,有大量的计算机需要同时安装Linux,如果通过光驱的方式一个个安装,不仅效率低,也不利于维护。

笔者在工作过程中,就遇到过第二种情况。一台Samsung的Q10笔记本需要安装Redhat Linux 80,但是通过光驱引导后发现,安装程序无法访问光盘。针对这个问题,笔者经过查阅资料和摸索,找到了在Q10上安装Linux的方法。在下面的讨论中,如不做特别声明,都将以Q10为例,介绍如何通过PXE Bootrom来远程安装Linux。

二、基本原理

1) 什么是PXE

PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的 *** 作系统通过网络下载到本地运行。

PXE协议的成功运行需要解决以下两个问题:

既然是通过网络传输,那么计算机在启动时,它的IP地址由谁来配置;

通过什么协议下载Linux内核和根文件系统

对于第一个问题,可以通过DHCP Server解决,由DHCP server来给PXE client分配一个IP地址,DHCP Server是用来给DHCP Client动态分配IP地址的协议,不过由于这里是给PXE Client分配IP地址,所以在配置DHCP Server时,需要增加相应的PXE特有配置。

至于第二个问题,在PXE client所在的ROM中,已经存在了TFTP Client。PXE Client使用TFTP Client,通过TFTP协议到TFTP Server上下载所需的文件。

这样,PXE协议运行的条件就具备了,下面我们就来看看PXE协议的工作过程。

2) 工作过程

在上图中,PXE client是需要安装Linux的计算机,TFTP Server和DHCP Server运行在另外一台Linux Server上。Bootstrap文件、配置文件、Linux内核以及Linux根文件系统都放置在Linux Server上TFTP服务器的根目录下。

PXE client在工作过程中,需要三个二进制文件:bootstrap、Linux 内核和Linux根文件系统。Bootstrap文件是可执行程序,它向用户提供简单的控制界面,并根据用户的选择,下载合适的Linux内核以及Linux根文件系统。

三、步骤

有了前面的背景知识,接下来就可以正式 *** 作了,下面按照顺序给出了 *** 作步骤:

1) 配置DHCP Server

选用ISC dhcp-30,DHCP Server的配置文件是/etc/dhcpdconf,配置文件的内容如下:

option space PXE;

option PXEmtftp-ip code 1 = ip-address;

option PXEmtftp-cport code 2 = unsigned integer 16;

option PXEmtftp-sport code 3 = unsigned integer 16;

option PXEmtftp-tmout code 4 = unsigned integer 8;

option PXEmtftp-delay code 5 = unsigned integer 8;

option PXEdiscovery-control code 6 = unsigned integer 8;

option PXEdiscovery-mcast-addr code 7 = ip-address;

class "pxeclients" {

match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";

option vendor-class-identifier "PXEClient";

vendor-option-space PXE;

# At least one of the vendor-specific PXE options must be set in

# order for the client boot ROMs to realize that we are a PXE-compliant

# server We set the MCAST IP address to 0000 to tell the boot ROM

# that we cant provide multicast TFTP (address 0000 means no

# address)

option PXEmtftp-ip 0000;

# This is the name of the file the boot ROMs should download

filename "pxelinux0";

# This is the name of the server they should get it from

next-server 19216801;

}

ddns-update-style interim;

ignore client-updates;

default-lease-time 1200;

max-lease-time 9200;

option subnet-mask 2552552550;

option broadcast-address 1921680255;

option routers 1921680254;

option domain-name-servers 19216801,19216802;

option domain-name "mydomainorg";

subnet 19216800 netmask 2552552550 {

range 192168010 1921680100;

}

host q10 {

hardware ethernet 00:00:F0:6B:38:5B;

fixed-address 192168022;

}

dhcpdconf配置文件中几个关键部分说明如下:host q10{…}定义了笔记本Q10网卡的MAC地址与IP地址的对应关系,表明DHCP Server为Q10分配一个固定的IP:192168022;filename ""指定bootstrap的文件名;netx-server指定TFTP Server的地址。其它的配置请读者参考DHCP Server的手册。

2) 配置TFTP server

选用tftp-hpa,TFTP Server的配置文件是/etc/xinetdd/tftp,配置文件的内容如下:

service tftp

{

socket_type = dgram

protocol = udp

wait = yes

user = root

server = /usr/sbin/intftpd

server_args = -u nobody -s /tftpboot

disable = no

per_source = 11

cps = 100 2

}

这里制定了/tftpboot为TFTP Server的根目录位置。

3) 配置bootstrap

bootstrap文件在dhcpdconf中被指定为pxelinux0文件,放置在/tftpboot。Linux内核以及Linux根文件系统也放置在/tftpboot。pxelinux0在执行过程中,要读配置文件,所有的配置文件都放在/tftpboot/pxelinuxcfg/目录下。由于PXElinux具有为不同的PXE Client提供不同的Linux内核以及根文件系统的功能,所以要通过不同的配置文件名来区分出不同的PXE Client的需求。比如一个PXE Client由DHCP Server分配的IP地址为192168022,那么相对应的配置文件名为/tftpboot/pxelinuxcfg/C0A80016(注:C0A80016为IP地址192168022的十六进制表示)。如果找不到,就按照顺序C0A80016-> C0A8001-> C0A800-> C0A80-> C0A8-> C0A-> C0-> C->default查找配置文件。

/tftpboot/pxelinuxcft/C0A80001配置文件的具体内容如下:

DEFAULT install

PROMPT 1

LABEL install

KERNEL vmlinuz

APPEND initrd=initrdimg devfs=nomount ramdisk_size=16384

此配置文件指定了Linux内核以及根文件系统的名称,并给内核传递了一些参数,其中ramdisk_size参数要非常注意,它指定Linux内核启动后建立ramdisk的大小,如果设置太小,Linux的安装过程就可能无法进行。

4) 制作Linux内核/根文件系统

因为需要通过网络安装,所有选择Redhat Linux 80安装盘(disk #1)中E:imagesootnetimg(光驱的盘符为E:)。bootnetimg包括Linux内核、Linux根文件系统(有安装程序在内)。用bootnetimg制作一张引导软盘,方法在DOS命令行运行E:dosutils awrite E:imagesootnetimg,根据提示制作。制作完毕后,将引导软盘中的vmlinuz(Linux内核)和initrdimg(Linux根文件系统)拷贝到Linux Server的/tftpboot下。

5) 启动DHCP Server/TFTP Server

在Linux Server上,运行service dhcpd start和service xinetd restart。

6) 启动Q10

Q10加电后,在出现Samsung公司徽标时,在左下角会提示用户按F12进入网络引导。按F12后,Q10进入网络引导过程。首先通过DHCP Server获得了IP地址,然后下载并执行bootstrap文件pxelinux0;在执行中,读入配置文件/tftpboot/pxelinuxcfg/C0A80016。此时屏幕上出现boot:,敲入install,就进入了Redhat Linux 80的网络安装界面,一切OK!

四、结束语

虽然以上的讨论是针对Samsung Q10笔记本,但是工作原理和安装方法对于其它类型的计算机也是适用的,不过要记住,计算机的网卡中必须要有BootROM--PXE Client。同时,PXE协议也可作为无盘Linux技术,用于引导放置在远程的Linux。实际上,只要根据需要,在Pxelinux的配置文件的APPEND选项中,为Linux内核传进需要mount的文件系统的位置参数即可。

以上就是关于pic18f67j60单片机 能用网络远程升级自己的程序吗全部的内容,包括:pic18f67j60单片机 能用网络远程升级自己的程序吗、Delphi实现远程串口的数据采集[1]、OTA远程在线升级等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10142266.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存