IAR的MQX应用笔记

合集下载

IAR for AVR 学习笔记

IAR for AVR 学习笔记

IAR for AVR 学习笔记IAR FOR AVR 学习笔记在AVR编程一直是C,从ICC->GCC->IAR IAR是一个唯一自己选择的.ICC由于入门容易所以选择了开始,GCC因为不要钱,所以后来就用了它.随着对GCC的不断认识,缺点不断显露,开始对IAR产生了兴趣.IAR在51,AVR,ARM的C上都是非常优秀的,它针对不同的单片机都有不同的C版本.唯一一点遗憾的是IAR的价格是个人和小公司难以承受的.当然网上有很多破解,现在的最新版4.20A也有了破解.IAR FOR AVR相关信息:破解方法:ID号注意一定要大写,不然注册将会失败 ,另外并不是每个号都是能用的了,要多试几次.如果注册成功后,编译就会通过.不然就报\没有可的证书\错误. 注意点:如何输出HEX文件?在配置文件后面加入以下代码,便可输出HEX文件,A90文件与HEX文件一样,SLISP都能识别.// Output File-Ointel-extended,(XDATA)=.eep //产生eeprom文件 -Ointel-extended,(CODE)=.A90 //产生烧写文件 -Ointel-extended,(CODE)=.hex //产生烧写文件中断向量的使用IAR中定义中断函数的格式是 ///////////////////////////////// #pragma vector=中断向量__interrupt void 中断服务程序(void) {//中断处理程序 }/////////////////////////////////////中断的初始化要另外加入代码,可在主程序内加入。

如下是各个中断函数的定义。

//中断定义#include#pragma vector=INT0_vect__interrupt void INT0_Server(void) { }#pragma vector=INT1_vect__interrupt void INT1_Server(void) { }#pragma vector=TIMER2_COMP_vect__interrupt void TIMER2_COMP_Server(void) { } #pragma vector=TIMER2_OVF_vect__interrupt void TIMER2_OVF_Server(void) { } #pragma vector=TIMER1_CAPT_vect__interrupt void TIMER1_CAPT_Server(void) { } #pragma vector=TIMER1_COMPA_vect__interrupt void TIMER1_COMPA_Server(void) { } #pragma vector=TIMER1_COMPB_vect__interrupt void TIMER1_COMPB_Server(void) { } #pragma vector=TIMER1_OVF_vect__interrupt void TIMER1_OVF_Server(void) { } #pragma vector=TIMER0_OVF_vect__interrupt void TIMER0_OVF_Server(void) { } #pragma vector=SPI_STC_vect__interrupt void SPI_STC_Server(void) { }#pragma vector=USART_RXC_vect__interrupt void USART_RXC_Server(void) { } #pragma vector=USART_UDRE_vect__interrupt void USART_UDRE_Server(void) { } #pragma vector=USART_TXC_vect__interrupt void USART_TXC_Server(void) { } #pragma vector=ADC_vect__interrupt void ADC_Server(void) { }#pragma vector=EE_RDY_vect__interrupt void EE_RDY_Server(void) { }#pragma vector=ANA_COMP_vect__interrupt void ANA_COMP_Server(void) { }#pragma vector=TWI_vect__interrupt void TWI_Server(void) { }#pragma vector=INT2_vect__interrupt void INT2_Server(void) { }#pragma vector=TIMER0_COMP_vect__interrupt void TIMER0_COMP_Server(void) { }#pragma vector=SPM_RDY_vect__interrupt void SPM_RDY_Server(void) { }如何把常数字符串定义在flash 空间?法一:unsigned char __flash temptab[] = {1,2,3,4,5}; 法二:__flashunsigned char temptab[] = {1,2,3,4,5}; 法三:#pragma type_attribute=__flash unsigned char temptab[]={1,2,3,4,5};法四:const unsigned char temptab[]={1,2,3,4,5};注:第三种方式用#pragma说明后,下面的定义的变量将都在FLASH空间了,用于定义一批FLASH变量,但实际上一般只能作为常量使用了.感谢您的阅读,祝您生活愉快。

IAR使用说明

IAR使用说明

IAR使用说明IAR 是一个集成开发环境(Integrated Development Environment,简称 IDE),主要用于嵌入式系统开发。

它提供了一系列工具和功能,用于编写、调试和测试嵌入式应用程序。

本文将介绍 IAR 的基本使用方法和一些常用功能。

-执行安装程序,按照提示完成安装过程。

-安装完成后,你将得到一个IAR的快捷方式,双击它即可启动。

2.创建项目- 打开 IAR,选择 "File" -> "Create New Project"。

也可以使用快捷键 "Ctrl+N"。

-在弹出的对话框中选择项目类型和存储位置,点击"OK"。

你可以选择创建一个空白项目,也可以选择一个现有的项目模板。

-接下来,你需要选择目标芯片器件。

IAR支持多种不同的芯片架构和型号,选择适合你的芯片类型,并点击"OK"。

3.配置项目-在项目生成后,你需要对项目进行一些配置。

- 点击 "Project" -> "Options",或者使用快捷键 "Alt+P" 打开项目配置对话框。

-在配置对话框中,你可以设置编译器选项、链接器选项、调试器选项和优化选项等。

-配置完成后,点击"OK"应用配置。

4.编写代码- 点击 "File" -> "Add" -> "New File",或者使用快捷键"Ctrl+Shift+N" 创建一个新文件。

- 保存代码文件,使用 ".c" 后缀名保存 C 语言代码,".cpp" 保存C++ 代码。

5.编译代码- 点击 "Project" -> "Make",或者使用快捷键 "F7" 编译代码。

IAR EWARM学习笔记

IAR EWARM学习笔记

IAR EWARM5.20学习笔记学习笔记((基于LPC2132)---LPC2132)---从零起步从零起步----在在proteus 中仿真运行(幻磁帝国原创幻磁帝国原创))一:创建一个最简洁的工程模板目的:IARM EWARM5.20编程入门,学会怎么用EWARM5.20版来创建自己的工程。

1.1新建一个空的工程文件夹,这里起名为MyEWARMstartup1.2新建EWARM 工程创建一个空的EWARM 工程:点击OK ,选择刚才新建的文件夹,工程取名为MyEWARMsartatup ,保存。

这样一个空的新的工程文件就建好了。

1.3拷贝IAR EWARM安装目录下例程中的启动文件本例用的是LPC2132,顾找到软件安装目录下的LPC213x的例程进去找到config文件夹,这个文件夹中装的就是LPC2132的启动文件可以看到这个文件加下面有四个文件Flash.icf Flash.mac RAM.icf和ram.mac。

暂且不用理会这几个文件的具体内容,只要知道它是启动文件就可以了。

拷贝config 文件夹,复制到先前建立的工程文件夹MyEWARMstartup 中。

到此,准备工作基本完成。

1.4工程设置右键点击workspace 中的工程名,选择Options ,对工程进行相关设置。

再Generral options 中选择具体的ARM 型号,这里选择LPC2132第二个要设置的选项是Output Converter ,即输出文件的设置,这里设置如下,生成hex 文件,文件的目录可以直接加到hex 文件名前面的。

如:D:\MyEWARMsartatup.hex接下来就是至关重要的启动代码的链接设置了,打开Linker选项如下,congfig选项卡中默认是没有勾选Override default的。

这时候就要用到先前我们拷贝的config文件夹中的东东了,也就是启动文件了。

勾选Override default,点击后面的选择链接,将路径选择到:C:\Documents and Settings\Administrator\桌面\MyEWARMstartup\config\RAM.icf如果想在Flash中运行就选择FLASH.icf 最后一个设置:本人是在proteus中仿真调试的,所以这里选择的是simulator方式,启动后运行到main函数。

iar编译器使用指南

iar编译器使用指南

iar编译器使用指南(原创版)目录1.IAR 编译器简介2.IAR 编译器的特点3.IAR 编译器的安装与配置4.IAR 编译器的使用5.IAR 编译器的优势与不足正文【1.IAR 编译器简介】IAR 编译器,全称 IAR Embedded Workbench,是一款由瑞典 IAR Systems 公司开发的集成开发环境(IDE), 主要用于编写和编译嵌入式系统软件。

IAR 编译器支持多种编程语言,如 C、C++等,适用于各种微处理器架构。

【2.IAR 编译器的特点】IAR 编译器具有以下特点:(1)高度优化的编译器,生成的代码执行效率高;(2)强大的调试功能,支持在线调试、断点调试等;(3)支持多种处理器架构,如 ARM、MIPS 等;(4)提供丰富的库函数,方便开发者调用。

【3.IAR 编译器的安装与配置】安装 IAR 编译器需要先下载对应的安装包,然后按照安装向导进行安装。

安装完成后,需要配置编译器,包括设置编译选项、链接器选项等。

配置完成后,即可开始使用 IAR 编译器编写和编译代码。

【4.IAR 编译器的使用】使用 IAR 编译器编写代码时,需要创建一个项目,然后编写源代码文件。

编写完成后,可以使用 IAR 编译器进行编译,生成可执行文件。

在开发过程中,可以使用 IAR 提供的调试工具进行调试,以提高代码质量。

【5.IAR 编译器的优势与不足】IAR 编译器的优势在于其高度优化的编译器和强大的调试功能,能够帮助开发者快速编写高效、稳定的嵌入式系统软件。

然而,IAR 编译器也存在一些不足,如学习曲线较陡峭,对于初学者可能不太友好。

IAR

IAR

IAR学习笔记(摘抄)SECOMTEL 2010-04-22 10:49:47 回复转载到∙hs∙探讨人生-徐古中学∙袅袅8∙单片机∙SoPC技术联盟∙单片机交流∙嵌入式技术开发群∙永恒的记忆∙丿波斯猫灬∙SILABS单片机(世强)∙单片机学习群∙哥妹儿∙电院科技兴趣小组∙嵌入式技术开发群∙湖工飞思卡尔小车比赛∙嵌入式之家∙SOPC交流群∙FPGA黑金开发板6∙C8051F单片机(世强)∙徐古∙EDA/SOPC嵌入式系统∙性情中人∙高三4班∙08电气(2)班∙学在蓝电∙0..0∙摄像头组∙高三(13)班∙期货投资学∙55366705IAR for AVR 学习笔记(1)--数据类型数据类型(编译器支持 ISO/ANSI C 基本数据类型和一些附加数据类型)1.1.整型数据bool 数据类型在C++语言里是默认支持的。

如果你在C代码的头文件里包含stdbool.h, bool数据类型也可以使用在C语言里。

也可以使用布尔值 false和true。

1.2.浮点数据类型:1.3.指针类型:指针有数据指针和函数指针。

1、数据指针:数据指针的大小为8位,16位,24位。

定义为:在整型数据类型后加”*”符号。

例如:char * p;整型数据没有24位,具体定义指针见后面扩展关键字章节。

2、函数指针:函数指针的大小为16位,24位。

指针定义:在函数类型后加”*”符号IAR for AVR 学习笔记(2)--扩展关键字可以用来解决数据,函数的存放等。

有了它我们就可以定义变量存放在EEPROM,FLASH空间。

定义中断函数,指针等等。

IAR关键字很多,这里只列举常用的。

2.1.扩展关键字:用于控制数据和指针。

__eeprom 用于EEPROM 存储空间, 控制数据存放,控制指针类型和存放__tinyflash, __flash, __farflash, __hugeflash 用于flash 存储空间, 控制数据存放,控制指针类型和存放:__ext_io, __io 用于I/O存储空间, 控制数据存放,控制指针类型和存放__regvar 放置一个变量在工作寄存器中2.2.函数扩展关键字:。

iar使用详细指南

iar使用详细指南

iar使用详细指南iar使用详细指南2009-12-05 10:02要:本应用笔记说明如何建立、构建和调试面向MAXQ?平台、以C语言编写的应用程序,并演示MAXQ2000的某些特性。

引言MAXQ平台得到了世界一流工具的支持,例如IAR专为MAXQ系列提供的“嵌入式工作台” (Embedded Workbench)。

本应用笔记说明如何建立、构建和调试面向MAXQ平台、以C语言编写的应用程序。

本文还将演示MAXQ2000的某些特性,MAXQ2000是MAXQ 系列的第一款微控制器。

本应用采用专用于MAXQ平台的1.12B版IAR编译器编写。

这些指令在后续版本的产品中仍会保留。

这些指令可以在MAXQ2000评估板上执行。

设置MAXQ2000评估板在开始编写代码前,首先连接MAXQ2000评估板。

该评估板应含有3块电路板,其中一个带有小型LCD屏。

最大的那个电路板(图1中连接了LCD子板的)就是MAXQ2000评估板。

我们将在本文后面讨论它的特性。

将LCD板连接至MAXQ2000评估板上标有J3的端子。

图1. 连接有LCD板的MAXQ2000评估板剩下的一块电路板是JTAG板。

MAXQ2000装载器和调试引擎采用JTAG协议通信。

由于很难找到通用的、用于个人计算机的商品化JTAG适配器,Dallas Semiconductor提供了一个串行至JTAG转换板。

评估板还包括了一个小型连接器。

如图2所示,使用该连接器来连接MAXQ2000评估板和JTAG板。

通过电缆将MAXQ2000评估板上标有J4的端子和JTAG电路板上标有P2的端子连接在一起。

注意,连接电缆的红边应在两个板子上的引脚“1”和“2”一侧。

图2. MAXQ2000评估板与JTAG板连接MAXQ2000评估板上有3个跳线。

跳线JU1、JU2和JU3上的引脚1和2应跳接在一起。

此外,确保晶体放置在Y1上(靠近板上的微处理器)。

本应用笔记的演示程序默认晶振频率为13.5MHz。

iar使用教程

iar使用教程

iar使用教程
当使用意图识别(IA)API时,可以按照以下步骤进行操作:
1. 获取API密钥:首先,需要获得使用IA API的有效API密钥。

可以在IA API的官方网站上注册并获取API密钥。

2. 设置请求:使用IA API时,可以发送HTTP POST请求来识别用户意图。

在请求的主体中,可以包含用户的输入文本或语音。

3. 发送请求:将设置好的请求发送到IA API的终端节点。

确保在请求中包含正确的API密钥,以便进行身份验证。

4. 解析响应:一旦完成请求,会从IA API接收到一个响应。

根据响应的格式,可以对其进行解析以获取所需的信息。

常见的响应格式有JSON和XML。

5. 处理结果:根据API的响应,可以在应用程序中进行适当的处理。

根据IA API的返回结果,可以根据意图来采取合适的行动或生成相应的回复。

在实际使用中,需要根据具体的编程语言和平台来实现以上步骤。

根据IA API提供的官方文档,可以找到相应语言的示例代码和详细教程来帮助使用IA API。

MQX开发入门

MQX开发入门

2012-5-30
3
1.2 MQX基本特点

MQX是面向应用的、专用特制的嵌入式RTOS,具有如下系统特性: (1)可伸缩性、可裁减、多层次的系统体系结构 (2)具有优化上下文切换和快速中断响应,实时性高 (3)可配置外形、直接应用编程接口(API)和模块化架构 (4)面向特定应用的简化型调用接口,专门支持一类嵌入式应用 (5)最小内核处理集,系统开销小,运行效率高 (6)具有各种即插即用的设备驱动接口,如USB主机/设备堆栈 (7)具有网络功能,提供TCP/IP协议栈(RTCS)协议,支持统一的 MAC访问层接口
23
2012-5-30
7.MQX设备驱动开发




设备驱动程序从字面上可以理解为一类程序,这类程序的目的一般是 驱动内部和外围的硬件正常工作,因此设备驱动程序都是针对特定的 硬件来编写的。设备驱动程序主要完成如下功能: (1)对设备进行初始化和释放设备; (2)把数据从内核传送到硬件,或从硬件中读取数据; (3)读取应用程序传送给设备文件的数据和回送应用程序请求的数 据; (4)检查处理设备出现的错误。
17

2012-5-30

user_config.h中提供了以下可以使能和禁止的模块
2012-5-30
18

通过配置user_config.h,可以有效的降低MQX对芯片Flash 和RAM的消耗。 目的:在MQX中建立两个任务。



任务一、小灯闪烁 任务二、串口接收数据并把接收到的数据返回给PC机。

Config:该目录下包含MQX配置文件 Demo:几个综合性的示例工程 Doc:MQX应用文档,包含用户手册、MFS参考手册和USB参考手册 等。

IAR AT91SAM9G10 移植笔记

IAR AT91SAM9G10 移植笔记

IAR AT91SAM9G10 移植笔记一需要修改的文件:arm\examples\Atmel\at91lib\boards\at91sam9g10-ek\board.h1.1 修改板子的名称/// Name of the board.#define BOARD_NAME "AT91SAM9G10-EK"1.2 板子晶振的频率#define BOARD_MAINOSC 120000001.3 IO口的修改!1.3.1 DBGU 调试串口【开发板使用调试串口输出调试信息】可以根据需要修改其他串口#define PINS_DBGU {(1<<9) | (1<<10), AT91C_BASE_PIOA, AT91C_ID_PIOA,PIO_PERIPH_A, PIO_DEFAULT}1.3.2 按键和LED/// LED #0 pin definition. 使用PA23作为LED的控制口#define PIN_LED_0 {1 << 23, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT}/// List of all LED pins definitions.LED的控制口列表#define PINS_LEDS PIN_LED_0, PIN_LED_1, PIN_LED_2/// Push button #1 pin definition.使用PA27作为按键的控制口#define PIN_PUSHBUTTON_1 {1 << 27, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_INPUT, PIO_PULLUP}/// List of all pushbutton pins definitions.按键的控制口列表#define PINS_PUSHBUTTONS PIN_PUSHBUTTON_1, PIN_PUSHBUTTON_2,PIN_PUSHBUTTON_3, PIN_PUSHBUTTON_41.3.3 SPIO0/// SPI0 MISO pin definition.#define PIN_SPI0_MISO {1 << 0, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}/// SPI0 MOSI pin definition.#define PIN_SPI0_MOSI {1 << 1, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_PULLUP}/// SPI0 SPCK pin definition.#define PIN_SPI0_SPCK {1 << 2, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_PULLUP}/// SPI0 chip select 0 pin definition.#define PIN_SPI0_NPCS0 {1 << 3, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_PULLUP}1.3.4 ssc 同一功能复用脚,但不能同时用/// SSC transmitter pins definition.#define PINS_SSC_TX { (1 << 21) | (1 << 22) | (1 << 23), \AT91C_BASE_PIOB, AT91C_ID_PIOB, PIO_PERIPH_A,PIO_DEFAULT}1.3.5 剩下部分包括:AT45 Data Flash AT26 Serial Flash LCD 触摸屏SD卡各部分的基址定义1.4 外部存储SDRAM NandFlash NorFlash(注:文档可能无法思考全面,请浏览后下载,供参考。

IAR用法点滴

IAR用法点滴

IAR用法点滴程序固化后运行方式:程序开始运行后需要将RW 和ZI段搬移到RAM中去,程序下载进Flash中以后,上电后是怎样将RW ZI断搬移到RAM中去的?注意IAR和ADS在进行完.s文件的初始化以后都不是直接跳转到main函数去执行,IAR是跳转到?main中而ADS是跳转到__main函数中,在这些函数中根据icf文件的配置,将RW和ZI段搬移到icf文件规定的RAM区域中。

如果程序的运行时域是在片外RAM中,那程序是在什么时候对片外RAM控制器进行初始化呢?因为.s文件的开始部分是CODE RO的,不需要RAM空间,所以可以在.s文件中对片外RAM进行配置。

还有一个问题,这个问题是在硬件设计时必须注意的,如果需要程序固化在外部Flash中,必须注意外接的Flash必须是片子上电后默认片外总线就支持的片子。

程序在RAM中调试的运行方式为了调试的方便,程序有时候是不需要下载进flash进行调试,而是直接在RAM 中运行,将icf文件中的ROM 和RAM地址都设成硬件RAM的地址,将Flashloader 的使能关掉,那么程序就运行在RAM中了。

但是问题又产生了,因为有时我们想在外部RAM 中调试代码,所以片外RAM控制器需要在代码下载进RAM之前进行初始化,怎么能够实现呢?IAR是通过.mac文件实现的。

在程序下载之前先执行了。

mac文件中的程序,下面是一个例子execUserFlashInit(){__writeMemory32(0x1000ffef, 0xffe00000 , "Memory");__writeMemory32(0x0f000114, 0xE002C014, "Memory");}该例子是lpc初始化外部RAM的例子。

配置好了外部RAM就可以在里面跑代码了。

程序的IAR下载1.文件在片内Flash中下载运行这是最简单也是最常用的方式,一般的ARM芯片都会带有片内Flash,IAR会通过Flashloader将二进制的可执行文件下载到Flash中。

IAR_for_AVR入门学习笔记 - IAR学习资料

IAR_for_AVR入门学习笔记 - IAR学习资料
a1.jpg (29.87 KB) 2009-12-20 00:28 2、到网上下载破解文件 解压后生成文件 Keygen 包,将它复制到 C 盘根目录下,如下图
a2.jpg (63.75 KB) 2009-12-20 00:28 3、打开文件包 keygen,双击文件 IARID.exe,出现本电脑 ID 号,如图,记下来
a9.jpg (33.54 KB) 2009-12-20 22:42 7、关于调试版本“debug”和发行版本“release”的选择如下图所示。在下拉箭头处进行两种版本的切换。
a10.jpg (4.92 KB) 2009-12-20 22:42 8、接下来把刚才创建的项目保存到一个工作区中,依次点击 file-save workspace 后,出现如图所示的保存界面,输入 工作区的名称(注意文件格式是.eww 格式),选择存放路径,然后点击“保存”按钮进行保存。
a6.jpg (3.12 KB) 2009-12-21 23:14
今天就到这里,明天我们来学习一下中断程序的编写 四、中断程序的编写 1、在 IAR 中中断处理函数的形式为: #pragma vector = 中断向量 _interrupt void 函数名(void) { /******中断服务函数的程序代码********/ } 例如:定时器 0 的溢出中断 #pragma vector = TIMER0_OVF_VECT _interrupt void timer0(void) { /******中断服务函数的程序代码********/ } 2、不同型号的 AVR 芯片,其中断个数和中断向量各不相同。以下是 ATmega16 的中断向量表。从下面的中断向量表 可以看出,所谓的中断向量,其实只是一个符号,利用#define 语句,将中断入口地址与中断向量符号联系了起来,这 样用助记符来表示中断,便于记忆 #define RESET_vect (0x00) #define INT0_vect (0x04) #define INT1_vect (0x08) #define TIMER2_COMP_vect (0x0C) #define TIMER2_OVF_vect (0x10) #define TIMER1_CAPT_vect (0x14) #define TIMER1_COMPA_vect (0x18) #define TIMER1_COMPB_vect (0x1C) #define TIMER1_OVF_vect (0x20) #define TIMER0_OVF_vect (0x24) #define SPI_STC_vect (0x28) #define USART_RXC_vect (0x2C)

ActiveMQ 学习笔记

ActiveMQ 学习笔记

ActiveMQ 学习笔记ActiveMQ 管理管理控制台webconsole访问地址:http://localhost:8161/admin队列管理说明:Number of Pending Message :挂起的消息数量Number of Consumers :消费者的数量Message Enqueued :进栈的消息数量Message Dequeued :出栈消息的数量主题管理说明:Number of Consumers :消费者的数量Message Enqueued :进栈的消息数量Message Dequeued :出栈消息的数量Active Subscribers:活动的主题订阅者Active Producers: 活动的主题发布者备注:JMX 与JMS的区别JMX:JMX--Java Management Extensions,即Java管理扩展,是一个为应用程序、设备、系统等植入管理功能的框架。

JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。

JMX体系结构分为以下四个层次:1)设备层(Instrumentation Level):主要定义了信息模型。

在JMX中,各种管理对象以管理构件的形式存在,需要管理时,向MBean服务器进行注册。

该层还定义了通知机制以及一些辅助元数据类。

2)代理层(Agent Level):主要定义了各种服务以及通信模型。

该层的核心是一个MBean 服务器,所有的管理构件都需要向它注册,才能被管理。

注册在MBean服务器上管理构件并不直接和远程应用程序进行通信,它们通过协议适配器和连接器进行通信。

而协议适配器和连接器也以管理构件的形式向MBean服务器注册才能提供相应的服务。

3)分布服务层(Distributed Service Level):主要定义了能对代理层进行操作的管理接口和构件,这样管理者就可以操作代理。

IAR基本使用解析

IAR基本使用解析

IAR基本使用解析
IAR的基本使用分为以下几个步骤:新建项目、配置项目、编写代码、编译代码和调试代码。

首先,可以通过选择“新建项目”来创建一个新的项目。

在创建项目时,可以选择目标设备和编程语言(C、C++等),并设置项目名称和存放
位置。

创建项目后,可以在项目目录中看到生成的项目文件。

第二步是配置项目。

在配置项目时,可以设置编译器的选项、目标设
备的选项以及其他与项目有关的选项。

这些选项包括编译器优化级别、编
译器警告级别、目标设备的存储器映射等。

根据项目的要求,可以对这些
选项进行适当的调整。

完成代码编写后,可以选择“编译”选项来编译代码。

在编译过程中,IAR会将代码转换为目标设备可以执行的二进制文件。

编译器会对代码进
行语法检查和代码优化,以提高代码的执行效率和功能。

最后,可以选择“调试”选项来调试代码。

IAR提供了一套强大的调
试工具,可以在目标设备上进行硬件调试和软件调试。

可以设置断点、监
视变量的值、查看寄存器的状态等。

调试过程中,可以单步执行代码,观
察代码的执行过程,以发现和解决问题。

除了以上的基本使用步骤外,IAR还提供了许多其他的功能和工具。

例如,它可以与版本控制系统集成,可以进行性能分析和代码覆盖率分析,还可以生成可执行文件和调试信息文件等。

总结起来,IAR是一种功能强大的嵌入式系统开发工具,能够帮助开
发人员高效地开发和调试嵌入式应用程序。

通过正确使用IAR的基本使用
步骤,可以提高开发效率,减少开发周期,并最终提供高质量的嵌入式系统。

MQX 串口驱动的使用方法

MQX 串口驱动的使用方法

#define BSPCFG_ENABLE_TTYB
1
2) 修改<your board>.h 头文件中 BSP_DEFAULT_IO_CHANNEL 的宏定义
#define BSP_DEFAULT_IO_CHANNEL
"ttyb:"
3) 修改_bsp_serial_io_init 函数中与第二个串口 ttyb 相关的管脚复用配置。
Step.3 设置串口参数(以设置波特率为例)
int buad = 19200; ioctl(rs232_dev,IO_IOCTL_SERIAL_SET_BAUD,&buad);
Step.4 写或读数据
写:write( rs232_dev, data_buffer, strlen(data_buffer) ); 读:read(rs232_dev,data_read,len);
IO_IOCTL_SERIAL_TRANSMIT_DONE 如果环形缓冲区中没有需要发送的数据则返回 1
IO_IOCTL_SERIAL_TX_DRAINED IO_IOCTL_SERIAL_CAN_TRANSMIT IO_IOCTL_SERIAL_CAN_RECEIVE
2.4 UART 驱动使用例程
执行 XON/XOFF 操作 转换结束符号
IO_SERIAL_ECHO
重复输入的字符
IO_SERIAL_HW_FLOW_CONTROL
打开硬件流控
IO_SERIAL_NON_BLOCKING
以非阻塞的方式打开串口驱动。在阻塞模式下,
调用_io_read() 时,函数不会等到输入缓冲区满, 而是直接返回已经接收到的字符串和数目。否
获取串口配置信息 设置串口标记量

IAR使用详解

IAR使用详解

(编译环境)IAR使用详解7.12.1 IAR 工具栏7.12.1.1 编程环境下IAR 工具栏在编程环境下IAR 开发环境的工具栏中主要的功能有:查找功能,和Edit 中的Find and Replace 功能相同;替换功能,和Edit 中的Find and Replace 功能相同;跳转到特定行特定列,和Edit 中的Navigate 功能相同;设置书签,跳转到书签,和Edit 中的Navigate 功能相同;编译单独源文件,和Project 中的编译工程相同;编译整个工程,和Project 中的编译工程相同;设置断点,和Edit 中Toggle Breakpoint 相同;下载并且仿真,和Project 中的下载仿真相同;仿真不进行下载,和Project 中的下载仿真相同;7.12.2 IAR 菜单栏在IAR 主界面中可以看到菜单栏中有7 个选项,如图2.1 所示。

图2.1 IAR 菜单栏7.12.2.1 File 选项如图2.2 所示,在File 选项中包括如下子选项。

“New”可以新建空白文件和工作空间(WorkSpace);“Open”可以打开文件和工作空间(WorkSpace);“Save Workspace”和“Close Workspace”分别对应保存工作空间和关闭工作空间;“Recent Files”用于快速打开最近使用过的源文件;“Recent Files”用于快速打开最近使用过的工作空间。

7.12.2.2 Edit 选项如图2.3 所示,在Edit 选项中,包括了最常用的复制、粘贴、重置和查找等通用的编辑类选项,同时也包括了一些IAR 开发环境特殊的编辑功能。

图2.3 Edit 选项接下来我们介绍一些比较常用的功能。

a) Find and Replace 查找和替换功能查找和替换是我们在编程中使用最频繁的功能。

如果定义的变量在多个文件中使用,但是在此时并不清楚这些变量的具体位置时,我们可以使用全局搜索功能,将变量的位置在Message 中罗列出来,这样可以快速找到变量,加强了程序的可读性。

IAR使用指南范文

IAR使用指南范文

IAR使用指南范文IAR是一款集成开发环境(IDE),专为嵌入式系统开发而设计。

它支持多种不同的微控制器架构,包括ARM,8051,AVR等。

本文将为您提供一个关于如何使用IAR进行嵌入式系统开发的详细指南。

第二步是创建一个新的IAR项目。

在IAR界面中,单击"File"菜单,然后选择"New"。

接下来,选择适用于您的微控制器架构的项目模板。

您可以选择一个空项目进行自定义开发,或者选择一个已有的模板进行基于模板的开发。

在创建项目后,您将获得一个包含默认文件的项目目录。

第三步是配置您的项目。

在IAR中,配置是一个非常重要的步骤,它确定了您将要使用的编译器、调试器和其他工具。

单击"Project"菜单,然后选择"Options"来打开项目选项对话框。

在这里,您可以配置编译器选项,优化级别,调试器接口等。

确保您的项目配置与您的硬件平台和需求相匹配。

第四步是添加文件到项目中。

在IAR界面的"Project"菜单中,选择"Add",然后选择"Add Files"。

从文件对话框中选择您要添加的源文件或头文件。

您可以在树状结构的窗口中选择要添加的文件。

在添加文件后,它们将会显示在项目的文件列表中。

第六步是编译和构建项目。

在IAR界面的"Project"菜单中,选择"Make",然后选择"Build"。

或者,您可以使用快捷键Ctrl+B编译和构建项目。

在编译和构建过程中,IAR将检查您的代码并将其转换为目标机器代码。

第七步是调试和测试项目。

在IAR界面的"Project"菜单中,选择"Download and Debug"。

这将启动与您的目标硬件进行通信的调试器。

您可以设置断点,观察变量,单步执行代码等等。

MQX培训0_简介

MQX培训0_简介

• •
TM
2
Freescale, the Freescale logo, AltiVec, C-5, CodeTEST, CodeWarrior, ColdFire, C-Ware, the Energy Efficient Solutions logo, mobileGT, PowerQUICC, QorIQ, StarCore and Symphony are trademarks of Freescale Semiconductor, Inc., Reg. U.S. Pat. & Tm. Off. BeeKit, BeeStack, ColdFire+, CoreNet, Flexis, Kinetis, MXC, Platform in a Package, Processor Expert, QorIQ Qonverge, Qorivva, QUICC Engine, SMARTMOS, TurboLink, VortiQa and Xtrinsic are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © 2011 Freescale Semiconductor, Inc.

使用 CORE, FTP, USB, MFS, 在IAR环境下编译:

158, 940 bytes of readonly code memory 9, 977 bytes of readonly data memory 1, 981 bytes of readwrite data memory

Freescale+MQX实时操作系统用户手册(中文)

Freescale+MQX实时操作系统用户手册(中文)
Freescale MQX 实时操作系统用户手册
译自: TM Freescale MQX Real-Time Operating System User’s Guide Document Number:MQXUG Rev. 0(04/2009)

苏州大学飞思卡尔嵌入式系统教学与应用培训中心 译 2010 年 3 月
I
2.8.4 看门狗........................................................................................... 10 2.9 中断和异常处理 .................................................................................. 10 2.10 I/O 驱动 .............................................................................................. 11 2.10.1 格式化 I/O ................................................................................. 11 2.10.2 I/O 子系统 ................................................................................... 11 2.11 检测工具 ............................................................................................ 11 2.11.1 日志............................................................................................. 11 2.11.2 轻量级日志 ................................................................................. 11 2.11.3 内核日志 ..................................................................................... 12 2.11.4 栈的运用 ..................................................................................... 12 2.12 出错处理 ............................................................................................ 12 2.12.1 任务出错代码............................................................................. 12 2.12.2 异常处理..................................................................................... 12 2.12.3 实时测试..................................................................................... 12 2.13 队列操纵 ............................................................................................ 13 2.14 命名组件 ............................................................................................ 13 2.15 嵌入式调试 ........................................................................................ 13 第三章 使用 MQX........................................................................................ 14 3.1 前言 ...................................................................................................... 14 3.2 初始化并开始运行 MQX.................................................................... 14 3.2.1 MQX 初始化结构 ......................................................................... 14 3.2.2 任务模板列表............................................................................... 15 3.3 使用 FREESCALE CODEWARRIOR DEVELOPMENT STUDIO ................... 18 3.4 管理任务 .............................................................................................. 20 3.4.1 创建任务....................................................................................... 21 3.4.2 获取任务 IDs ................................................................................ 21 3.4.3 获取和设置一个任务环境 ........................................................... 21 3.4.4 管理任务错误............................................................................... 22 3.4.5 重启任务....................................................................................... 22 3.4.6 终止任务....................................................................................... 22 3.4.7 实例:创建任务........................................................................... 23 3.5 调度任务 .............................................................................................. 25 3.5.1 FIFO 调度 ...................................................................................... 25 3.5.2 轮循调度....................................................................................... 26 3.6 内存管理 .............................................................................................. 27

MQX使用手册

MQX使用手册

一、MQX 简介消息队列执行〔Message Queue eXecutive,MQX〕是Precise Software Technologies 公司1989 年开发的一款嵌入式实时操作系统。

2000 年3 月,MQX 被ARC 公司收购,并在新的处理器体系中〔主要包含:Freescale 的ColdFire 系列、IBM®/Freescale 的PowerPC、ARM、ARC 和i.MX 等〕继续开发。

2021 年,飞思卡尔半导体公司出售ColdFire MCU 时,附送MQX,并在官方网站上提供开源源代码,使其成为开源RTOS。

MQX 的应用主要是向电子系统的智能化方向延伸。

MQX 是面向应用的、专用特制的嵌入式实时操作系统。

它除具有根本的处理多任务、文件及设备驱动的操作系统功能之外,还具有如下系统特性:〔1〕方便移植;〔2〕系统结构的可伸缩性和可裁减性强;〔3〕带有最优化上下文切换和中断时间的功能强大的、高效的预测响应时间,具有实时高性能;〔4〕采用很小的可配置外形、直接应用编程接口〔API〕和模块化架构,能够很好地满足各种不同应用需求;〔5〕面向特定应用的简化型系统调用接口,专门支持一类嵌入式应用;〔6〕最小内核处理集,系统开销小,运行效率高,并可用于各种非计算机设备;〔7〕可伸缩性、可裁减的系统体系结构,提供多层次的系统体系结构;〔8〕具有各种即插即用的设备驱动接口,如USB 主机/设备堆栈;〔9〕具有网络功能,提供TCP/IP 协议栈(RTCS)协议支持统一的MAC 访问层接口。

MQX 采用微内核结构,由核心组件〔必选〕和可选性组件构成。

对于核心组件,只有那些MQX 或应用程序调用的函数包含在映像中。

为了满足要求,应用程序可通过参加可选组件来扩展和配置核心组件。

MQX 采用很小的可配置外形,可配置为低至6KB 的ROM,包括内核,中断,信号量,队列和内存管理器。

MQX 微内核包含带有抢占式和快速中断响应的多任务内核、扩展的进程间通信、同步工具和文件系统。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

IAR的MQX移植及应用笔记RTOS应用2015-12-25[公司地址] htgdIAR的MQX移植及应用笔记1.所需工具条件IAR7.10 MQX4.2(本文档所指均已上面工具版本为准)2.移植3.1工程结构建立a)在自己的IAR工作区新建MQX工作文件夹b)运行BSPCloningWizard.exe,在D:\Freescale\Freescale_MQX_4_2\tools\BSPCloningWizard目录复制目录可根据需求自行勾选(bsp/psp必选)c)点击按钮,导出源码结构到所需工程目录下d)在IAR工程目录下运行e)创建DMU_MQX_V1的IAR工程如下f)在工程MQX目录下新建app文件夹放置自己的应用工程文件及源码g)IAR新建workspace,新建工程h)往工作区加入bsp和psp工程,由于需要对bsp进行修改不能只引用库文件工程目录入下图至此工程结构已基本成型,下一步就是针对硬件堆bsp进行修改,内容同之前的codewarrior基本雷同3.2工程bsp移植修改a)工程配置具体请参见其他的IAR使用指导,再次不做赘述,只说重点预处理的路径在lib文件夹,这是bsp和psp的库文件所在后期icf文件通常需要修改b)Bsp修改3.3基于例程test工程配置同上,下面主要描述bsp修改a)bsp_cm.c硬件初始化修改详细可参照IAR的配置修改一文下面直接复制修改好的初始化程序修改部分均有注释void _bsp_initialize_hardware(void){unsigned char temp_reg;_bsp_watchdog_disable();#if MQX_ENABLE_LOW_POWER //低功耗模式(禁用)/* Reset from LLWU wake up source */if (_lpm_get_reset_source() == MQX_RESET_SOURCE_LLWU){PMC_REGSC |= PMC_REGSC_ACKISO_MASK; //唤醒}#endif/* System clock initialization *//* SIM_SCGC5: PORTA=1 替换为打开所有端口gate*/SIM_SCGC5 |= (SIM_SCGC5_PORTA_MASK| SIM_SCGC5_PORTB_MASK| SIM_SCGC5_PORTC_MASK| SIM_SCGC5_PORTD_MASK| SIM_SCGC5_PORTE_MASK );// if ( *((uint8_t*) 0x03FFU) != 0xFFU) {// MCG_C3 = *((uint8_t*) 0x03FFU);// MCG_C4 = (MCG_C4 & 0xE0U) | ((*((uint8_t*) 0x03FEU)) &0x1FU);// }//上面代码主要为FEI模式的设置替换如下//分频设置if ((PMC_REGSC & PMC_REGSC_ACKISO_MASK) != 0x0U){PMC_REGSC |= PMC_REGSC_ACKISO_MASK;} /* Release IO pads after wakeup from VLLS mode. */SIM_CLKDIV1 = ( 0| SIM_CLKDIV1_OUTDIV1(0) //core 1| SIM_CLKDIV1_OUTDIV2(1) //bus 2| SIM_CLKDIV1_OUTDIV3(3) //FlexBus 4| SIM_CLKDIV1_OUTDIV4(3) ); //flash 4 Update system prescalers/* SIM_CLKDIV2: USBDIV=1,USBFRAC=0 */SIM_CLKDIV2 = (uint32_t)((SIM_CLKDIV2 & (uint32_t)~0x0DUL) | (uint32_t)0x02UL); /* Update USB clock prescalers *//* SIM_SOPT2: PLLFLLSEL=1 */SIM_SOPT2 |= SIM_SOPT2_PLLFLLSEL_MASK; /* Select PLL as a clock source for various peripherals *//* SIM_SOPT1: OSC32KSEL=3 */SIM_SOPT1 |= SIM_SOPT1_OSC32KSEL(0x03); /* LPO 1kHz oscillator drives 32 kHz clock for various peripherals *///无源晶振引脚设置/* PORTA_PCR18: ISF=0,MUX=0 */PORTA_PCR18 &= (uint32_t)~(uint32_t)((PORT_PCR_ISF_MASK | PORT_PCR_MUX(0x07)));/* PORTA_PCR19: ISF=0,MUX=0 */PORTA_PCR19 &= (uint32_t)~(uint32_t)((PORT_PCR_ISF_MASK | PORT_PCR_MUX(0x07)));/* 无源晶振电容值22pf设置OSC_CR:ERCLKEN=1,??=0,EREFSTEN=0,??=0,SC2P=1,SC4P=1,SC8P=0,SC16P=1 */ OSC_CR = OSC_CR_ERCLKEN_MASK |OSC_CR_SC2P_MASK |OSC_CR_SC4P_MASK |OSC_CR_SC16P_MASK;/* Switch to FBE Mode *//* MCG_C7: OSCSEL=0 */// MCG_C7 &= (uint8_t)~(uint8_t)0x01U;/* MCG_C2: LOCRE0=0,??=0,RANGE0=2,HGO0=0,EREFS0=1,LP=0,IRCS=0 */MCG_C2 = (uint8_t)0x24U;/* MCG_C1: CLKS=2,FRDIV=5,IREFS=0,IRCLKEN=1,IREFSTEN=0 */MCG_C1 = (uint8_t)0xAAU;/* MCG_C4: DMX32=0,DRST_DRS=0 */MCG_C4 &= (uint8_t)~(uint8_t)0xE0U;/* MCG_C5: PLLCLKEN0=0,PLLSTEN0=0,PRDIV0=7 */MCG_C5 = (uint8_t)0x07U;/* MCG_C6: LOLIE0=0,PLLS=0,CME0=0,VDIV0=8 */MCG_C6 = (uint8_t)0x08U;while((MCG_S & MCG_S_IREFST_MASK) != 0x00U) { /* Check that the source of the FLL reference clock is the external reference clock. */}while((MCG_S & 0x0CU) != 0x08U) { /* Wait until external reference clock is selected as MCG output */}/* Switch to PBE Mode *//* MCG_C7: OSCSEL=0 */// MCG_C7 &= (uint8_t)~(uint8_t)0x01U;/* MCG_C1: CLKS=2,FRDIV=5,IREFS=0,IRCLKEN=1,IREFSTEN=0 */MCG_C1 = (uint8_t)0xAAU;/* MCG_C6: LOLIE0=0,PLLS=1,CME0=0,VDIV0=8 */MCG_C6 = (uint8_t)0x48U;while((MCG_S & 0x0CU) != 0x08U) { /* Wait until external reference clock is selected as MCG output */}while((MCG_S & MCG_S_LOCK0_MASK) == 0x00U) { /* Wait until locked */ }/* Switch to PEE Mode *//* MCG_C7: OSCSEL=0 */// MCG_C7 &= (uint8_t)~(uint8_t)0x01U;/* MCG_C1: CLKS=0,FRDIV=5,IREFS=0,IRCLKEN=1,IREFSTEN=0 */MCG_C1 = (uint8_t)0x2AU;/* MCG_C5: ??=0,PLLCLKEN0=0,PLLSTEN0=1,PRDIV0=0x07 */MCG_C5 = (uint8_t)0x07U;/* MCG_C6: LOLIE0=0,PLLS=1,CME0=0,VDIV0=8 */MCG_C6 = (uint8_t)0x48U;while((MCG_S & 0x0CU) != 0x0CU) { /* Wait until output of the PLL is selected */}/* MCG_C6: CME0=1 */// MCG_C6 |= (uint8_t)0x20U; /* Enable the clock monitor */// SIM_SCGC4 |= SIM_SCGC4_LLWU_MASK; /* Enable LLWU */}b)bsp_cm.h时钟分配的修改c)user_config.h用户配置根据需求增加配置,常用的写1使能即可有些组件或功能可能需要手动添加设置默认打印口,添加如下(UART5)3.组件使用实例3.1打印口设置修改位置bsp /BSP files / init_gpio.c,/ _mqx_int _bsp_serial_io_init根据对应模块号修改自己使用的引脚注意:硬件后期的配置修改在DMU_MQX_V1.h中进行3.2MQX任务使用方法建议每个任务均添加_time_delay(1);时间根据情况定,这样系统会顺畅一些。

后面有时间了再来整理3.3RTCS组件使用a)初始步骤:A.添加RTCS库工程B.添加之后进行编译一次,输出对应库文件C.在应用工程里面添加库链接引用D.修改:DMU_MQX_V1.h的其他以太网的所有宏定义参数均可在这个文件修改E.修改IO引脚配置为MII,init_gpio.cF.以太网的默认参数配置在init_enet.cENET_OPTION_RMII改为ENET_OPTION_MIIG.在user_config.h中添加及使能配置如下添加:#define RTCSCFG_ENABLE_IP4 1配置如下:#define RTCSCFG_ENABLE_ICMP 1#define RTCSCFG_ENABLE_UDP 1#define RTCSCFG_ENABLE_TCP 1#define RTCSCFG_ENABLE_STATS 1#define RTCSCFG_ENABLE_GATEWAYS 1#define FTPDCFG_USES_MFS 1#define RTCSCFG_ENABLE_SNMP 0H.Enet驱动修改,主要是phy修改其他像MAC层的不动,根据自己的以太网PHY更换或者修改,主要为替换PHY寄存器宏定义,对MAC接口不变;可参照例程模板进行phy驱动设计;b)RTCS组件的使用1)RTCS精简,减小ROM占用,主要设置rtcscfg.h以下为对默认的修改项#define RTCSCFG_ENABLE_IGMP 02)4.MQX调试问题笔记1)任务调用函数运行时出错,严重时导致重启?问题:任务堆栈设置过小,设置堆栈时应考虑任务本身及其所调用函数总共的空间大小,堆栈溢出会发生各种异常。

相关文档
最新文档