我有几年的桌面和网络编程经验.我想继续做一些嵌入式系统编程.在询问了最初的问题后,我想知道我应该从哪个硬件/软件IDE开始......
Arduino + Arduino IDE?
Atmel AVR + AVR Studio 4?
飞思卡尔HCS12或Coldfire + CodeWarrior?
Microchip PIC + MPLAB?
ARM Cortex-M3 + ARM RealView/WinARM
或者......没关系?
哪个开发平台最容易学习和编程(考虑到IDE的可用性)?
如果出现问题,哪一个最容易调试?
我的目标是了解"IO端口如何工作,内存限制/要求,包括可能的分页,中断服务程序". 学习一个我稍后会使用的,或者高级概念应该延续到大多数微控制器是否更好?
谢谢!
更新:这个开发工具包是如何开始的?评论?建议?
我正在使用飞思卡尔Kinetis K60并使用CodeWarrior IDE(我认为它使用GCC作为编译器).
我想将两个32位数相乘(这导致64位数)并且只保留高32位.
我认为ARM Cortex-M4的正确汇编指令是SMMUL指令.我更喜欢从C代码而不是汇编访问此指令.我该怎么做呢?
我想代码理想情况下是这样的:
int a,b,c;
a = 1073741824; // 0x40000000 = 0.5 as a D0 fixed point number
b = 1073741824; // 0x40000000 = 0.5 as a D0 fixed point number
c = ((long long)a*b) >> 31; // 31 because there are two sign bits after the multiplication
// so I can throw away the most significant bit
Run Code Online (Sandbox Code Playgroud)
当我在CodeWarrior中尝试这个时,我得到c的正确结果(536870912 = 0.25作为D0 FP号).我没有看到任何地方的SMMUL指令,乘法是3条指令(UMULL,MLA和MLA - 我不明白它为什么使用无符号乘法,但这是另一个问题).我也尝试过32的右移,因为这可能对SMMUL指令更有意义,但这并没有做任何不同的事情.
我在微处理器类中,我们在飞思卡尔CodeWarrior中使用汇编语言来编程68HCS12微控制器.本周我们的任务是反转一个字节,所以如果字节是00000001,输出将是10000000,或者是00101011到11010100.我们必须使用汇编语言,并被告知我们可以使用旋转和移位(但不限于! )完成这项任务.我真的不知道应该从哪里开始.
情况:
我的微控制器课程的讲师拒绝将示例代码保存到文本文件中,而是将其保存到 word 文档文件中。当我打开 doc 文件并将代码复制/粘贴到我的 IDE“CodeWarrior”中时,它会在编译时导致错误。
我不得不将所有代码重写到文本编辑器中,然后将其复制/粘贴到我的 IDE 中。
我的理解:
我被告知始终将代码保存为文本文件,因为当您将代码保存为 Word 文档文件时,当您将代码复制/粘贴到 IDE 进行编译时,它会引入不需要的字符。
我对你的问题:
1.)
有人可以向我解释这个困境,以便我更好地理解它吗?当我下次收到错误时,我想提出一个更好的案例,并了解更多关于正在发生的事情。
2.)
是否可以编写一个脚本,当代码来自 Word 文档与文本文件时,向我显示所有正在复制并粘贴到文件中的字符?换句话说,是否有一个程序可以让我看到从 word doc 文件与 txt 文件复制/粘贴代码之间发生了什么?
codewarrior ×4
68hc12 ×1
arduino ×1
arm ×1
assembly ×1
avr-studio4 ×1
c ×1
copy-paste ×1
cortex-m3 ×1
embedded ×1
file ×1
gcc ×1
reverse ×1