MIPS汇编代码(龙芯)小记

龙芯代码中用于设置CPU GPIO High / Low部分, 寄存器在Loongson3A4000_register_doc_V1.2.pdf中有说明, 具体配置步骤:

1.设置输出状态为高或低

2.设置GPIO输出使能, 低有效

3.设置功能使能(有些GPIO属于复用Pin,需要先设置成GPIO功能), 低有效

/* set GPIO as output
 * x : 0x1<<offset
 */
#define GPIO_SET_OUTPUT(x) \
dli             v0,             0x900000001fe00500; \  /* set GPIO base address */
lw              v1,             0xc(v0); \             /* read offset 0x0c register(input state) from GPIO base address */
or              v1,             x; \                   /* set to high */
sw              v1,             0x8(v0); \             /* write data to GPIO base address, offset 0x8 */
lw              v1,             0x0(v0); \             /* read output enable register state */
or              v1,             x; \
xor             v1,             x; \
sw              v1,             0x0(v0); \
lw              v1,             0x4(v0); \             /* read GPIO function enable register state */
or              v1,             x; \
xor             v1,             x; \
sw              v1,             0x4(v0); \
nop; \
nop;

/* clear GPIO as output
 *  * x : 0x1 <<offsest
 *   */
#define GPIO_CLEAR_OUTPUT(x) \
dli             v0,             0x900000001fe00500; \
lw              v1,             0xc(v0); \
or              v1,             x; \
xor             v1,             x; \                     /* set to low */
sw              v1,             0x8(v0); \
lw              v1,             0x0(v0); \
or              v1,             x; \
xor             v1,             x; \
sw              v1,             0x0(v0); \
lw              v1,             0x4(v0); \
or              v1,             x; \
xor             v1,             x; \
sw              v1,             0x4(v0); \
nop; \
nop;

 

版权声明:
作者:bin
链接:https://ay123.net/mystudy/bios/804/
来源:爱影博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>