1.hex文件详解及常用合并方法介绍
2.JLink:嵌入式开发者的标准得力助手,下载
3.graalvm的源码用途都有哪些?
4.printf系列教程00_概述printf各种打印输出方法和相关内容
5.STM32 进阶教程 1 - micropython 移植
6.手把手教你把JLink变成串口调试助手
hex文件详解及常用合并方法介绍
在多模块系统开发中,hex文件合并技巧显得尤为重要,开源特别是标准当涉及IAP升级这样的场景,需将BOOT和APP分区整合为一个文件。源码hex文件,开源ssl源码安装作为单片机可执行的标准文件格式,其合并策略至关重要。源码接下来,开源我们将深入解析hex文件的标准结构和常见合并方法。hex文件的源码本质
hex文件是一种用于向单片机加载程序的二进制文件,通过编译器将C语言或汇编程序编译而成。开源它的标准核心结构包括三部分:首部信息、数据区和尾部结束标记。源码首部信息的开源前4字节标识数据长度,后4字节描述地址和类型,如数据记录()、文件结束()、地址扩展()等,最后的校验和保证数据完整。hex文件与地址对应
hex文件中的每个数据行都与单片机的内存地址紧密相关。首字节的数据长度指示后续字节的数量,后续字节则包含地址信息,如0x表示从特定地址开始记录。校验和确保数据的正确性,例如,第2行的校验和0xD2通过计算得出。合并hex文件的方法
1. 直接合并法 简单但不推荐的方式是直接在文本编辑器中操作。删除BOOT文件的最后一行结束标识,然后粘贴APP代码。但这种方式缺乏精确的地址管理和校验,不适用于大规模或复杂项目。 2. 使用jlink工具 jlink是一款强大的单片机烧录工具。通过jflash功能,你可以打开两个hex文件,将一个文件的内容追加到另一个文件的末尾,然后保存合并后的文件。这不仅方便,还能确保地址的连续性和一致性。 3. 开源工具 网络上有许多免费的开源工具,如C#编写的STM-IAP-HEX-Merge。下载源码,根据提示操作,可以轻松合并多个hex文件,生成的bin文件也可一并使用。这种方式更加灵活且便于扩展。经验分享
合并hex文件是开发过程中的基础技能,掌握好这些方法可以简化生产流程,减少成本。如果你在合并过程中遇到问题,欢迎随时与我交流,一起探索和学习。JLink:嵌入式开发者的得力助手,下载
下载链接:
[V7.f][][JLink_Windows_Vf_x_.exe]
位下载链接:呐,我给你 - 做一个舒服的嵌入式工具下载站
[V7.f][][JLink_Windows_Vf_i.exe]
位下载链接:呐,我给你 - 做一个舒服的cago开箱源码嵌入式工具下载站
JLink是SEGGER公司推出的一款适用于嵌入式系统的调试工具,它的出现极大地方便了嵌入式开发者的调试工作。
一、JLink简介
JLink是一款专为嵌入式系统设计的调试工具,支持ARM、Cortex-M、Cortex-R等多个系列的处理器。通过JLink,开发者可以在计算机上与目标板进行实时通信,进行程序下载、调试、仿真等操作。其主要优点包括:支持多种处理器系列、操作简单方便、功能强大等。但同时,它也存在一些不足,如:价格相对较高,不提供源代码等。
二、JLink使用指南
硬件准备
使用JLink需要准备相应的硬件设备,包括JLink调试器和目标板。调试器需与计算机连接,而目标板则通过调试器与计算机通信。
软件安装
在硬件准备完毕后,安装相应的软件使用JLink。首先安装SEGGER的J-Flash软件,用于将程序烧录到目标板上;其次安装JLink驱动程序,用于连接调试器和计算机;最后安装相应的IDE和编译器,以便编写和编译程序。
连接方式
调试器和目标板的连接方式根据实际情况选择。通常,可以通过串口、USB接口或JTAG接口连接。具体连接方式需根据目标板的接口类型和调试器的接口类型确定。
数据传输
使用JLink进行数据传输主要包括程序下载和调试数据传输两个方面。程序下载是通过J-Flash软件将编译好的程序烧录到目标板上;调试数据传输是通过JLink驱动程序与目标板进行实时通信,传输调试过程中的数据。
三、使用案例
调试硬件问题
在嵌入式系统开发中,硬件问题是不可避免的。使用JLink可以帮助快速定位并解决硬件问题。如出现某个硬件故障时,可以通过JLink将调试器连接到目标板上,然后在计算机上运行相应程序,观察目标板的反应情况,从而快速定位故障位置。
加载程序
在嵌入式系统开发中,需要将程序烧录到目标板上。使用JLink可以方便地将程序烧录到目标板上。通过J-Flash软件,将编译好的程序文件烧录到目标板闪存中。同时,JLink还支持在程序运行过程中进行动态加载,在不重新烧录程序的情况下,对部分代码进行更新和调试。源码时代offer
四、注意事项
安全问题
使用JLink时需要注意安全问题。由于调试过程中需要与目标板进行实时通信,因此需确保目标板与计算机之间的连接稳定可靠。此外,还需对调试过程中传输的数据进行加密处理,以防数据被非法获取或篡改。
连接稳定性
在嵌入式系统开发时,需保持调试器与目标板的稳定连接。若连接不稳定,可能导致程序下载失败或调试过程中出现异常情况。因此,需定期检查连接状态并进行维护,以确保连接稳定可靠。
电池寿命
若目标板使用的是可充电电池进行供电,需注意电池寿命问题。若电池电量不足,可能导致目标板无法正常工作或出现异常情况。因此,需定期检查电池电量并进行充电,以确保电池寿命得到充分保障。
五、结论总结
本文介绍了使用JLink的技巧和攻略。通过掌握这些技巧和注意事项,可以更方便地利用JLink进行嵌入式系统开发工作。同时,我们也注意到,不同的目标板和实际需求对使用技巧和注意事项有不同的要求和挑战。因此,在使用JLink时需结合具体情况灵活应用并加以思考和总结。总的来说,JLink作为一款强大的嵌入式系统调试工具,对嵌入式开发者来说具有很高的实用价值和使用价值。
graalvm的用途都有哪些?
在软件开发领域,graalvm是一个极具潜力的工具,它的用途广泛,主要体现在两大方面。
首先,graalvm通过增强和自举传统Java部分,提供了graal aot(ahead-of-time)编译技术,实现Java源码到native机器码的编译。这不仅提升了程序的运行效率,而且基于graal aot,还实现了graal jit(just-in-time)编译器,直接替代了传统C++实现的C1/C2 JIT编译器。这些技术的引入,标志着graalvm已经逐渐融入并成为openjdk项目的一部分,使得未来的Java开发环境更加高效、便捷。
其次,graalvm在多语言支持方面展现了其独特优势。它通过polyglot(多语言)技术,实现了与其他脚本语言的无缝集成,计划将其作为Java模块,发布至maven仓库。体检套餐源码用户可以利用jlink等工具,对Java标准包进行扩展和修改,类似于javafx对awt和swing的修改和替代,但graal polyglot的目标是修改和替代Java编译器前端,从而支持更多脚本语言。
综上所述,graalvm旨在成为Java基础生态中的重要组成部分,通过优化Java运行时环境,以及提供多语言支持,为开发者提供了更高效、灵活的开发工具,加速了软件开发的进程。
printf系列教程_概述printf各种打印输出方法和相关内容
说明: 本文为『strongerHuang』原创,首发于微信公众号『嵌入式专栏』,同时在个人网站EmbeddedDevelop上更新。 标签:printf、SWD、SWO、SWV、ITM、JLink-RTT、ST-Link、J-Link、仿真、重定义、串口映射 一、写在前面 在MCU项目中,printf主要用于调试信息输出,如程序执行异常时显示错误提示。 前文在公众号『strongerHuang』发布文章《基于STM的多种printf用法》后,得到良好反馈,故整理成此详细教程系列。 目前整理的文章涵盖:UART打印输出
仿真打印输出
SWO打印输出
JLink-RTT打印输出
除了仿真,其他三种方式均基于MCU硬件实现打印输出,UART效率最低,SWO与JLink-RTT效率更高。 二、printf输出方式 本教程聚焦MCU的printf打印输出方法,常见方式包括:使用UART串口输出
仿真环境内的输出
SWO打印输出
JLink-RTT打印输出
除仿真外,其他三种为基于MCU硬件的打印输出,从效率看,UART < SWO < JLink-RTT。 每种printf输出方式各有应用场景,具备独特特点。 三、实验现象 通过实验现象了解printf内容,后续文章将详细配置。3.1 UART打印输出
UART是常见的打印输出方式,需占用硬件UART串口。3.2 仿真打印输出
在集成开发环境内模拟printf输出,无需连接物理开发板即可实现。3.3 SWO打印输出
SWO(Serial Wire Output)提供串行线输出,SWD(Serial Wire Debug)用于调试,SWV(Serial Wire Viewer)用于查看。 SWO输出需额外SWO引脚线,咬定指标源码配合SWV查看器使用。 基于Keil的『Debug(printf)Viewer』 基于IAR的『Terminal IO』 基于ST-LINK Utility的『Serial Wire Viewer』 基于J-Link的『SWO Viewer』 说明:前两种工具可分别在ST-Link和J-link下查看,第三种专用于ST-Link,第四种专用于J-link。3.4 JLink-RTT打印输出
无需使用UART串口或额外SWO引脚,需在代码中添加相关配置。 四、软、硬件工具及其它说明 教程使用的软件和工具包含:STMCubeMX
Keil MDK-ARM
IAR EWARM
STM ST-LINK Utility
J-Link / J-Trace
硬件要求:MCU开发板(Cortex-M3、M4均可,本教程以STMF0、F1、F4系列为例)
下载调试器(ST-Link或J-Link)
PC(推荐Windows系统,兼容MDK-ARM)
额外说明:提供源代码工程下载
不推荐使用软件仿真,因开发板成本较低且仿真与实际可能存在差异
五、说明 文档仅供个人学习使用,禁止商用。由个人编辑整理,可能存在错误。教程同步更新于微信公众号『嵌入式专栏』,关注公众号回复printf系列教程查看。 博客:strongerhuang.com GitHub:github.com/EmbeddedDeve... 关注微信公众号『strongerHuang』,在底部菜单中查看更多内容!STM 进阶教程 1 - micropython 移植
在STMFZET6开发板上移植Micropython,为单片机和嵌入式程序开发引入Python的优点。
MicroPython是Python 3的精简高效实现,包含标准库的一部分,可在微控制器和受限环境中运行。它具备Python的高级特性,如交互式提示符、任意精度整数、闭包、列表解析、生成器和异常处理等,同时体积紧凑,可在k代码空间和k RAM中运行。
移植Micropython至STMFZET6开发板,让我们以正点原子的stmf4探索者开发板为例,使用JFLAH、PUTTY和ST_DFU工具进行硬件配置。ST_DFU工具可从document/d...>获取。
安装所需的工具,如Git、gcc和gcc-arm-none-eabi交叉编译器,并在Ubuntu系统中下载Micropython源码。在ports/stm/boards目录下找到支持的处理器或开发板型号,如STMF4DISC,然后将其复制并重命名为MYBOARD。在micropython目录下进入mpy-cross目录,先编译MicroPython cross-compiler,随后编译Micropython。生成的固件以DFU或HEX形式适用于烧录。
使用jlink工具直接烧录firmware.hex文件至开发板。如需使用DFU,参考相关教程。程序烧录与运行后,在电脑资源管理器中应能看到USB串行设备或新盘符。通过PUTTY连接开发板,执行命令验证Micropython功能,如加减乘除运算、IO口操作、随机数生成等。
实现Micropython移植教程至此完成。如需深入了解Micropython,可访问en...>。对移植过程感兴趣或有实际应用案例的同学,可继续研究和实践。针对所用开发板,仍有未完全支持的功能,如不支持特定GPIO口的操作、LED控制端口不匹配或UART1使用受限。下一节将介绍解决这些具体问题的方法。
手把手教你把JLink变成串口调试助手
在单片机开发过程中,打印调试信息通常依赖于串口调试。通常,我们会预留串口1进行调试,但如果在实际项目中没有预留,JLink仿真调试器可以成为你的得力助手。JLink,由SEEGER公司出品,体积小巧,只有四根线,非常适合携带和使用,尤其适合ST系列芯片的开发。
首先,确保你的电脑上已安装JLink驱动,可以从segger.com下载最新版本的JLink V7.或更高版本。安装完成后,你将发现安装目录下包含RTT功能的相关文件。RTT源码包位于JLink驱动的Samples\RTT文件夹中,只需将其复制到项目文件夹并与工程中的.c文件集成即可。
接下来,配置RTT功能。在编译无误后,连接JLink下载器,并启动JLinkRTTViewer.exe。配置好RTT参数,将程序下载到单片机,就能看到打印信息了。注意,RTT的缓冲大小可自定义,以适应大量信息的打印需求。
RTT还支持多虚拟端口打印,以及颜色定制,只需在字符串前添加对应宏定义。此外,你还可以通过重定向printf到RTT来简化调试,只需替换fputc函数即可。这样,即使在没有预留串口的情况下,你也能轻松进行调试和打印信息。
总结来说,当遇到项目中无串口调试需求时,JLink的RTT功能是一个实用的解决方案,可以根据具体项目的特点灵活运用。通过这个方法,你可以轻松地在单片机开发中实现调试打印。
想要java软件安装包,有哪位朋友有吗
软件介绍java se development kit 9 位,简称为java9 位,是由oracle公司官方推出的一款Java语言的软件开发工具包,面向Java开发人员,包括一个完整的JRE以及用于开发、调试和监视Java应用的工具,是整个Java的核心,其中包括了Java运行环境(Java Runtime EnvirnmeJava开发工具和Java基础类库源代码)。java se 9是Java Platform的新更新,此版本包括期待已久的新特性,如Java Platform模块化、性能提升、支持新标准以及许多其他改进。其中Java Platform模块化是java se development kit 9的最大特色,在引入了模块系统之后,JDK 被重新组织成 个模块。Java应用可以通过新增的jlink 工具,创建出只包含所依赖的JDK模块的自定义运行时镜像,这样可以极大的减少Java 9运行时环境的大小,使得JDK可以在更小的设备中使用。
所需工具:点击下载java se development kit 9
java se development kit 9 位新特性
1、Java 平台级模块系统
Java 9 的定义功能是一套全新的模块系统。当代码库越来越大,创建复杂,盘根错节的“意大利面条式代码”的几率呈指数级的增长。这时候就得面对两个基础的问题: 很难真正地对代码进行封装, 而系统并没有对不同部分(也就是 JAR 文件)之间的依赖关系有个明确的概念。每一个公共类都可以被类路径之下任何其它的公共类所访问到, 这样就会导致无意中使用了并不想被公开访问的 API。此外,类路径本身也存在问题: 你怎么知晓所有需要的 JAR 都已经有了, 或者是不是会有重复的项呢? 模块系统把这俩个问题都给解决了。
模块化的 JAR 文件都包含一个额外的模块描述器。在这个模块描述器中, 对其它模块的依赖是通过 “requires” 来表示的。另外, “exports” 语句控制着哪些包是可以被其它模块访问到的。所有不被导出的包默认都封装在模块的里面。如下是一个模块描述器的示例,存在于 “module-info.java” 文件中:
请注意,两个模块都包含封装的包,因为它们没有被导出(使用橙色盾牌可视化)。 没有人会偶然地使用来自这些包中的类。Java 平台本身也使用自己的模块系统进行了模块化。通过封装 JDK 的内部类,平台更安全,持续改进也更容易。
当启动一个模块化应用时, JVM 会验证是否所有的模块都能使用,这基于 `requires` 语句——比脆弱的类路径迈进了一大步。模块允许你更好地强制结构化封装你的应用并明确依赖。你可以在这个课程中学习更多关于 Java 9 中模块工作的信息 。
2. Linking
当你使用具有显式依赖关系的模块和模块化的 JDK 时,新的可能性出现了。你的应用程序模块现在将声明其对其他应用程序模块的依赖以及对其所使用的 JDK 模块的依赖。为什么不使用这些信息创建一个最小的运行时环境,其中只包含运行应用程序所需的那些模块呢? 这可以通过 Java 9 中的新的 jlink 工具实现。你可以创建针对应用程序进行优化的最小运行时映像而不需要使用完全加载 JDK 安装版本。
3. JShell : 交互式 Java REPL
许多语言已经具有交互式编程环境,Java 现在加入了这个俱乐部。您可以从控制台启动 jshell ,并直接启动输入和执行 Java 代码。 jshell 的即时反馈使它成为探索 API 和尝试语言特性的好工具。
测试一个 Java 正则表达式是一个很好的说明 jshell 如何使您的生活更轻松的例子。 交互式 shell 还可以提供良好的教学环境以及提高生产力,您可以在此了解更多信息。在教人们如何编写 Java 的过程中,不再需要解释 “public static void main(String [] args)” 这句废话。
4. 改进的 Javadoc
有时一些小事情可以带来很大的不同。你是否就像我一样在一直使用 Google 来查找正确的 Javadoc 页面呢? 这不再需要了。Javadoc 现在支持在 API 文档中的进行搜索。另外,Javadoc 的输出现在符合兼容 HTML5 标准。此外,你会注意到,每个 Javadoc 页面都包含有关 JDK 模块类或接口来源的信息。
5. 集合工厂方法
通常,您希望在代码中创建一个集合(例如,List 或 Set ),并直接用一些元素填充它。 实例化集合,几个 “add” 调用,使得代码重复。 Java 9,添加了几种集合工厂方法:
除了更短和更好阅读之外,这些方法也可以避免您选择特定的集合实现。 事实上,从工厂方法返回已放入数个元素的集合实现是高度优化的。这是可能的,因为它们是不可变的:在创建后,继续添加元素到这些集合会导致 “UnsupportedOperationException” 。
6. 改进的 Stream API
长期以来,Stream API 都是 Java 标准库最好的改进之一。通过这套 API 可以在集合上建立用于转换的申明管道。在 Java 9 中它会变得更好。Stream 接口中添加了 4 个新的方法:
dropWhile, takeWhile, ofNullable。还有个 iterate 方法的新重载方法,可以让你提供一个 Predicate (判断条件)来指定什么时候结束迭代:
第二个参数是一个 Lambda,它会在当前 IntStream 中的元素到达 的时候返回 true。因此这个简单的示例是向控制台打印 1 到 。
除了对 Stream 本身的扩展,Optional 和 Stream 之间的结合也得到了改进。现在可以通过 Optional 的新方法 `stram` 将一个 Optional 对象转换为一个(可能是空的) Stream 对象:
在组合复杂的 Stream 管道时,将 Optional 转换为 Stream 非常有用。
7. 私有接口方法
Java9为我们带来了接口的默认方法。 接口现在也可以包含行为,而不仅仅是方法签名。 但是,如果在接口上有几个默认方法,代码几乎相同,会发生什么情况? 通常,您将重构这些方法,调用一个可复用的私有方法。 但默认方法不能是私有的。 将复用代码创建为一个默认方法不是一个解决方案,因为该辅助方法会成为公共API的一部分。 使用 Java 9,您可以向接口添加私有辅助方法来解决此问题:
如果您使用默认方法开发 API ,那么私有接口方法可能有助于构建其实现。
8. HTTP/2
Java 9 中有新的方式来处理 HTTP 调用。这个迟到的特性用于代替老旧的
`HttpURLConnection` API,并提供对 WebSocket 和 HTTP/2 的支持。注意:新的
HttpClient API 在 Java 9 中以所谓的孵化器模块交付。也就是说,这套 API 不能保证 % 完成。
9. 多版本兼容 JAR
我们最后要来着重介绍的这个特性对于库的维护者而言是个特别好的消息。当一个新版本的 Java 出现的时候,你的库用户要花费数年时间才会切换到这个新的版本。这就意味着库得去向后兼容你想要支持的最老的 Java 版本 (许多情况下就是 Java 6 或者 7)。这实际上意味着未来的很长一段时间,你都不能在库中运用 Java 9 所提供的新特性。
、支持Unicode 8.0。JDK 8支持Unicode 6.2。
Unicode的6.3,7.0和8.0标准相结合引入个字符,个脚本,和块,所有这些在JDK 9支撑。
java9 位安装教程:
1、软件下载解压完成后,点击jdk-9_windows-x打开软件包,等待片刻后点击下一步开始安装软件。
2、选择安装组件和安装路径。
3、确定软件安装目录。
4、java9 位安装完成。
更新日志
java se development kit 9是一个主要的功能版本,以下总结了Java SE 9和JDK 9(Oracle的Java SE 9的实现)中的功能和增强功能。
A、关键变化:
一、Java平台模块系统
介绍一种新的Java编程组件,这个模块是一个有名的,自描述的代码和数据集合。这个模块系统:
1、引入了一个新的可选阶段,即链接时间,该时间在编译时间和运行时间之间,在此期间可以将一组模块组装并优化为自定义运行时映像; 看到jlink在工具Java平台,标准版工具参考。
2、将选项添加到工具javac,jlink以及java可以指定模块路径的位置,这些模块路径定位了模块的定义。
3、介绍模块化的JAR文件,它是一个JAR文件,module-info.class在其根目录中有一个文件。
4、介绍JMOD格式,除了可以包含本地代码和配置文件之外,它是与JAR类似的打包格式; 看到这个jmod工具。
二、JEP :新的版本字符串计划
提供简化的版本字符串格式,有助于清楚地区分主要,次要,安全和修补程序更新版本。
B、新增功能
1、使用安装程序的用户界面启用或禁用Web部署
提供在安装程序的欢迎页面中启用或禁用Web部署的选项。要启用Web部署,请在“ 欢迎”页面中选择“ 自定义安装”,单击“ 安装”,然后选中“ 在浏览器中启用Java内容”复选框。
2、JEP :jshell:Java Shell(Read-Eval-Print Loop)
将Read-Eval-Print Loop(REPL)功能添加到Java平台。
该jshell工具提供了一个用于评估Java编程语言的声明,语句和表达式的交互式命令行界面。
它有助于对编码选项进行原型设计和探索,并立即得到结果和反馈。即时反馈与以表达式开始的能力相结合对教育非常有用,无论是学习Java语言,还是学习新的API或语言功能。
3、JEP :添加更多的诊断命令
定义其他诊断命令以提高诊断Hotspot和JDK问题的能力。
3、JEP :删除启动时JRE版本选择
删除了在启动时请求不是JRE版本的JRE版本的功能。
4、JEP :多版本JAR文件
扩展JAR文件格式,使多个Java特定版本的类文件能够共存于一个归档中。
5、JEP :删除JVM TI hprof代理
hprof从JDK中删除代理。该hprof代理程序被编写为JVM工具接口的演示代码,并不打算成为生产工具。
6、JEP :删除jhat工具
jhat从JDK中删除该工具。
7、JEP :验证JVM命令行标志参数
验证所有数字JVM命令行标志的参数以避免失败,如果发现它们是无效的,则会显示相应的错误消息。
反對鳥籠罷免! 立院今排審《選罷法》民進黨甲動占領主席台
震仓线指标公式源码_震仓k线
如何查找网页视频源码文件_如何查找网页视频源码文件夹
涨跌判断指标公式源码_涨跌指标是什么意思
英國會大選變天 出口民調工黨估奪410席「首相將換人」
员工工时管理源码在哪找到_工时管理app