标签: 68hc11

让GCC优化手工装配

在试图让GCC不会产生负载-修改店经营每次我做的时间|=&=,我已经定义了下面的宏:

#define bset(base, offset, mask) bmanip(set, base, offset, mask)

#define bclr(base, offset, mask) bmanip(clr, base, offset, mask)

#define bmanip(op, base, offset, mask) \
asm("pshx");\
asm("ldx " #base);\
asm("b" #op " " #offset ",x " #mask);\
asm("pulx")
Run Code Online (Sandbox Code Playgroud)

他们工作得很好; 拆解后的二进制文件非常完美.

当我按顺序使用多个时,问题出现了:

inline void spi_init()
{
  bset(_io_ports, M6811_DDRD, 0x38);
  bset(_io_ports, M6811_PORTD, 0x20);
  bset(_io_ports, M6811_SPCR, (M6811_SPE | M6811_DWOM | M6811_MSTR));
}
Run Code Online (Sandbox Code Playgroud)

这导致:

00002227 <spi_init>:
    2227:       3c              pshx
    2228:       fe 10 00        ldx     0x1000 <_io_ports>
    222b:       1c 09 38        bset    0x9,x, …
Run Code Online (Sandbox Code Playgroud)

assembly gcc 68hc11

8
推荐指数
1
解决办法
1754
查看次数

适用于68HC12/68HC12X的GCC工具链

我想知道是否有人使用GCC作为飞思卡尔68HC12微控制器系列的生产稳定工具链.在我看来,除了飞思卡尔本身和宇宙软件(http://www.cosmic-software.com/)和IAR(http://www.iar)之外,还没有最新的工具链..com /),当然.

MegaSquirt(http://www.msextra.com/tools/)似乎提供了最维护的工具链,打包于2010年10月29日.它是基于SCz工具的扩展版本(我不知道它意味着什么) :

  • binutils-2.18具有S12X和XGATE增强功能
  • gcc-3.3.6带有S12/S12X ldivmod和larith增强功能
  • 具有9s12x目标的newlib

gcc 68hc11

4
推荐指数
1
解决办法
3240
查看次数

地址0被HCS08上的NULL指针覆盖

在我的8位飞思卡尔HCS08微型计算机上,每当我调用一个库函数,它返回值指向我传递它,我真的不想要它们,我扔了一个NULL,例如

UART_SendBlock((char *)txstr, strlen(txstr), NULL);
Run Code Online (Sandbox Code Playgroud)

最后一个参数的类型是 uint16_t *并返回实际发送的字符数,这是我不关心的值.

但是,每当调用该函数时,我的微型端口上的端口A出现了问题,并且调试向我指出了这个问题搞砸了.端口A的配置寄存器位于地址0x0000和0x0001,这是NULL(aka (void *)0)指向的地方.我认为NULL它实际上并不是什么魔法,但它似乎并不是这样.

我的解决方法感觉非常黑客:

#define MNUL (void *)(&mynull)
uint32_t mynull;
Run Code Online (Sandbox Code Playgroud)

有更好的解决方案吗?我尝试将MNUL定义到处理器上未使用的内存段,但这会导致立即重置.

c embedded null 8-bit 68hc11

2
推荐指数
1
解决办法
322
查看次数

如何查找和更改嵌入式 Forth 控制器中的变量?

在维修仪表组时,我需要使用 Forth 更换基于 Motorola MC68HC11构建的控制器。虽然我能够转储整个内存,但不知道使用的是哪个 Forth,并且可用的单词似乎非常有限。

在嵌入式 Forth 环境中如何定位和更改内存中的已知值?

embedded debugging forth 68hc11

2
推荐指数
1
解决办法
195
查看次数

标签 统计

68hc11 ×4

embedded ×2

gcc ×2

8-bit ×1

assembly ×1

c ×1

debugging ×1

forth ×1

null ×1