Questions tagged «cortex-m3»

是用于微控制器的ARM 32位RISC处理器内核

7
Linux on ARM Cortex-M3系列
我是ARM的新手,对所有不同的系列都有些困惑。 我需要构建一个低功耗网关(以太网,无线网络...),所以我认为cortex-M或cortex-R将是一个很好的起点。但是没有找到任何支持Linux的cortex-m3(似乎很受欢迎)的开发板。 似乎是linuxM3,所以我想知道为什么在mbed或LPCXpresso周围没有linux项目? 谁能指出我想要的开发板,或者向我解释为什么“ cortex m” + linux没有更多答案?
29 arm  linux  cortex-m3 

5
Cortex-m3工具链
我正在寻找Linux(Ubuntu)的免费(如自由)工具链,该工具链允许我开发ARM cortex-m3(lpc1343)微控制器。在哪里可以找到这样的工具链?有教程吗?
22 cortex-m3  arm  linux 

6
最小的嵌入式Linux发行版?
我想问一下那里的专家。.什么是最好的嵌入式Linux发行版: 闪存〜700Kb 内存〜256Kb 处理器:高端手臂皮质M3(例如STM32系列产品) 所需模块:-内核-基本驱动程序集:USB /网络(用于WiFi-无AP,仅客户端,无安全性)/ SPI / Uart / I2C 这完全有可能还是我在做梦? 这个想法是使用5美元的高端CortexM3,并且不使用任何外部存储器,这样我就可以享受SDIO / WiFi等可用的驱动程序。 我更新了有关WiFi的问题。WiFi是工厂客户端的一种简单运行方式。没有什么幻想,如果我适合的话也许会哭。 另一个更新:uCLinux怎么样?

5
Cortex(ARM)微控制器上的WFI(等待中断)的最佳模式
我正在研究使用EFM Gekko控制器(http://energymicro.com/)来开发电池供电的软件,并且希望该控制器在无用的情况下都能入睡。WFI(等待中断)指令用于此目的。它将使处理器进入睡眠状态,直到发生中断。 如果通过在某个地方存储东西来进行睡眠,则可以使用独占负载/独占存储操作来执行以下操作: //每当发生某事时,dont_sleep都会加载2 //应该强制主循环至少循环一次。如果有中断 //在以下语句中导致将其重置为2, //行为就像中断发生在它之后一样。 store_exclusive(load_exclusive(dont_sleep)>> 1); while(!dont_sleep) { //如果下一条语句与store_exclusive之间发生中断,请不要入睡 load_exclusive(SLEEP_TRIGGER); 如果(!dont_sleep) store_exclusive(SLEEP_TRIGGER); } 如果在load_exclusive和store_exclusive操作之间发生中断,则将导致跳过store_exclusive,从而使系统再循环运行一次(以查看中断是否设置了dont_sleep)。不幸的是,Gekko使用WFI指令而不是写地址来触发睡眠模式。像这样写代码 如果(!dont_sleep) WFI(); 冒着可能在'if'和'wfi'之间发生中断并设置dont_sleep的风险,但是wfi仍会继续执行。防止这种情况的最佳方式是什么?将PRIMASK设置为1以防止中断在执行WFI之前中断处理器,并在之后立即将其清除?还是有更好的技巧? 编辑 我想知道事件位。通过一般描述,它想用于多处理器支持,但是想知道是否可以使用以下内容: 如果(dont_sleep) SEV(); / *将使以下WFE清除事件标志但不休眠* / WFE(); 设置don_t_sleep的每个中断也应执行SEV指令,因此,如果该中断发生在“ if”测试之后,则WFE将清除事件标志,但不会进入睡眠状态。听起来像是一个好范例吗?
18 arm  cortex-m3  sleep 

5
使用现代CPU(例如ARM)进行周期计数
在许多应用中,其指令执行与预期的输入激励具有已知时序关系的CPU可以处理如果该关系未知则需要更快CPU的任务。例如,在我使用PSOC生成视频的项目中,我使用代码每16个CPU时钟输出一个字节的视频数据。由于测试SPI设备是否准备就绪,如果不进行分支转移,则IIRC将花费13个时钟,加载和存储输出数据将花费11个时钟,因此无法测试该设备在字节之间的准备情况;取而代之的是,我只是安排让处理器在第一个字节之后的每个字节上精确执行价值16个周期的代码(我相信我使用了实际索引加载,虚拟索引加载和存储)。每行的第一次SPI写操作发生在视频开始之前,对于随后的每次写操作,都有一个16周期的窗口,在该窗口中可以进行写操作而不会导致缓冲区溢出或欠载。分支循环生成了一个13周期的不确定性窗口,但是可预测的16周期执行意味着所有后续字节的不确定性都将适合相同的13周期窗口(又适合于当写入可接受时的16周期窗口内)发生)。 对于较旧的CPU,指令时序信息是清晰,可用且明确的。对于较新的ARM,时序信息似乎更加模糊。我了解从闪存执行代码时,缓存行为会使事情难以预测,因此我希望应该从RAM执行任何周期计数的代码。即使从RAM执行代码,规范也有些含糊。使用循环计数代码仍然是一个好主意吗?如果是这样,使它可靠工作的最佳技术是什么?可以安全地假设某个芯片供应商不会在某种程度上悄无声息地使用“新改进的”芯片,从而在某些情况下缩短了某些指令的执行周期的程度? 假设以下循环在一个字边界上开始,那么如何根据规范精确地确定将花费多长时间(假设具有零等待状态内存的Cortex-M3;对于该示例,与系统无关的其他内容)。 myloop: mov r0,r0; 简短的简单说明,可以预取更多说明 mov r0,r0; 简短的简单说明,可以预取更多说明 mov r0,r0; 简短的简单说明,可以预取更多说明 mov r0,r0; 简短的简单说明,可以预取更多说明 mov r0,r0; 简短的简单说明,可以预取更多说明 mov r0,r0; 简短的简单说明,可以预取更多说明 加r2,r1,#0x12000000; 2字指令 ; 重复以下操作,可能使用不同的操作数 ; 将继续增加价值直到发生进位 itcc addcc r2,r2,#0x12000000; 2字指令,加上itcc的额外“字” itcc addcc r2,r2,#0x12000000; 2字指令,加上itcc的额外“字” itcc addcc r2,r2,#0x12000000; 2字指令,加上itcc的额外“字” itcc addcc r2,r2,#0x12000000; 2字指令,加上itcc的额外“字” ; ... etc,带有更多条件的两个单词的指令 子R8,R8,#1 bpl myloop …

3
有集成了WiFi的基于ARM的微控制器吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为电气工程堆栈交换的主题。 5年前关闭。 我正在寻找一种带集成WiFi的基于ARM的低成本SoC,尝试了不同的搜索引擎,但仍然找不到一个。 我想知道是否有人知道这样的设备,它只需要集成WiFi控制器和外部天线。 我可能会选择ARM以外的其他体系结构,但是我宁愿选择已经具有正常工作的SW开发环境的CPU体系结构。 ---- 7月27日更新-----我发现有一个带有ARM Cortex M3和WiFi接口的设备,名字叫Imp,他们在这里用IC出售一个小型的舷外机。 http://smartmaker.com/en/home/602-electric-imp-002.html 这个问题是与该设备的所有通信都必须通过其服务器。现在的问题是,是否还有其他公司拥有这样的产品,它们具有开放的界面而不是像Imp!这样的封闭界面? Update 2 REALTEK似乎为此创建了一个完美的低成本模块,这些模块在e-bay和AliExpress上广泛可用,如下所示: http://fr.aliexpress.com/item/RTL8710-WiFi-Wireless-Transceiver-Module-SOC/32666025289.html 该模块的售价在2美元到4美元之间,具体取决于数量和出货量。RTL8710基于Cortex M3,并具有5​​12k和2M之间的可用内存。 在Hackaday上有一个关于RTL8710的写得很好的页面: http://hackaday.com/2016/07/28/new-chip-alert-rtl8710-a-cheaper-esp8266-competitor

4
Cortex M3 .bss区域初始化的裸机启动代码
我从这里得到了启发,为手臂皮质M3设计了一个裸机启动代码。但是,我遇到以下问题:假设我声明了一个未初始化的全局变量,例如main.c中的unsigned char类型 #include ... unsigned char var; ... int main() { ... } 这使得STM32 f103中的.bss区域开始于_BSS_START = 0x20000000并结束于_BSS_END = 0x20000001。现在,启动代码 unsigned int * bss_start_p = &_BSS_START; unsigned int * bss_end_p = &_BSS_END; while(bss_start_p != bss_end_p) { *bss_start_p = 0; bss_start_p++; } 尝试将整个.bss区域初始化为零。但是,在while循环内,指针增加了4个字节,因此在执行bss_start_p = 0x20000004的步骤之后,它将始终与bss_end_p不同,从而导致无限循环等。 有什么标准的解决方案吗?我是否想以某种方式“强制” .bss区域的尺寸为4的倍数?还是应该使用指向无符号字符的指针来遍历.bss区域?也许像这样: unsigned char * bss_start_p = …

1
将安全密钥存储在嵌入式设备的内存中
我正在嵌入式设备上工作,该设备发送/接收数据并以密文模式(加密模式)存储它们。现在,什么是存储密钥的最佳方法(我使用了ARM CORTEX M系列MCU)? 1-将密钥存储在SRAM存储器中,并在每个引导顺序中,将密钥注入嵌入式MCU,并将其存储在SRAM存储器中。我认为这是最好的方法,然后,当MCU感应到渗透(使用篡改传感器或...)时,它可以快速擦除SRAM并自行复位。缺点:如果攻击者成功通过篡改并访问设备,则SRAM存储器的安全性(针对代码挖掘)。我在MCU中找不到此存储器的任何安全功能。 2-生成密钥并将其存储在编程MCU中的闪存中。MCU闪存支持CRP(代码读取保护),可防止代码挖掘,并借助其内部AES引擎和RNG(随机数生成)引擎,我们可以制作随机密钥并加密闪存并将该随机密钥存储在OTP中(一次可编程存储器-128位加密存储器),然后在执行代码时,我们使用RNG密钥对闪存进行解码,并访问初始密钥和代码。缺点:密钥存储在非易失性存储器中,篡改是无用的,攻击者有很多时间来挖掘密钥。 3-存储在EEPROM存储器中的密钥,上述两种方法的结合,密钥存储在非易失性存储器中,但当篡改时可穿透EEPROM。 我认为LPC18S57FBD208(具有1MB闪存,180MHZ,136KB SRAM,16KB EEPROM和TFT LCD控制器的皮质m3,我需要驱动7英寸TFT LCD和AES 128位加密引擎)对此是否还有其他更好的建议?
10 arm  cortex-m3  lpc 

3
Cortex-M3的关键部分
我想知道在Cortex-M3上实现关键代码部分的情况,这些部分由于时序限制或并发问题而不允许例外。 就我而言,我正在运行LPC1758,板上装有TI CC2500收发器。CC2500具有可用作RX缓冲区中的数据和TX缓冲区中的可用空间的中断线的引脚。 例如,我想在我的MCU的SRAM中有一个TX缓冲区,而当收发器的TX缓冲区中有可用空间时,我想在其中写入此数据。但是,将数据放入SRAM缓冲区的例程显然不能被TX中的自由空间中断中断。因此,我想做的是在执行此过程以填充此缓冲区时临时禁用中断,但在此过程完成后执行此过程期间会发生任何中断。 在Cortex-M3上如何做到最好?

4
用LPC1343构建电路
这里有没有人使用过LPC1343 Cortex-M3芯片? 之前,我已经使用PIC微控制器构建了一些小型电路,但现在我正在使用LPC1243 Cortex-3 / ARM。我一直在使用LPCXpresso原型板,该板工作得很好,但现在我想为我的电路构建合适的PCB。我发现该芯片在软件中比PIC更好用(我也很喜欢!) 使用PIC,我的经验是在构建硬件时很容易忘记一些东西。例如,某些图片上的某个引脚需要拉低以禁用低电压编程,或者该芯片无法编程。 我的电路只是连接到芯片的18x2线LCD模块,该模块的输入来自通过USB HID接口连接的PC。我所有的工作都在原型板/面包板上。 我打算在LPC1343上进行连接 用于电源和去耦电容器的电源引脚 12 MHZ晶体和电容器。 我需要驱动硬件的6个I / O引脚(LCD模块) USB引脚通过电阻器和上拉电阻器连接到USB端口 接通复位引脚和启用内部USB Bootloader的引脚 就这样。我的问题是,我还需要连接其他引脚吗?重要的是,要使这尽可能简单,因为这是我的第一个“业余”芯片项目,坦率地说,要焊接它而又不增加额外的复杂性将非常困难(但我相信我可以做到!) 我想我应该发布原理图,但是我错过了任何明显的事情吗?

3
BSD风格CMSIS的开源替代品?
由于CMSIS的许可证在开源方面尚不清楚,因此将CMSIS包含在开源项目中可能是违法的,无论它使用的是GPL还是BSD样式的许可证。 对于基于Cortex M的MCU,是否有与BSD或Apache2.0许可证兼容的CMSIS替代产品? 还是有人知道将CMSIS纳入开源项目是否可以? 谢谢
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.