Pure assembly language design with PSOC Creator

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
vizh_468401
Level 1
Level 1
First question asked First reply posted

Dear,

      we are willing to use assembly language(don't use C) to design with PSOC 4 MCU, but we can't find much more user guide for assembly,including project create, compile, debug, compoent configure and export to other IDES, etc.

    please help to check if any guide for this, thanks.

    another question: where can we find the detailed register list, we need  the info. to configure register directly.

b/r

vincent

0 Likes
5 Replies
Vison_Zhang
Moderator
Moderator
Moderator
First comment on KBA 750 replies posted 250 sign-ins

PSoC Creator 提供的绝大多数组件的底层驱动都是 C 写,请问你是需要使用会做来设计应用层代码还是从低层到顶层都使用汇编来完成? 如果是前者,你直接在 Creator-->Workspace Explorer-->Project xxxx-->Header Files/Source Files 文件夹图标右击,添加新项目,然后添加 Assembly 源码文件即可,Creator 会自动对这些文件进行编译,项目导出到三方IDE也不会受影响。如果你需要从底层到顶层全部使用汇编来完成,那我不建议使用Creator, 直接使用 IAR/KEIL 从零创建一个工程更方便,因为 Creator IDE 与组件之间有很多绑定关系,这些联系会给你的汇编编写带来限制。

P4 芯片的寄存器详细列表,请查看对应系列的 Register TRM

0 Likes

1. 如果只做应用层,底层的相关API在汇编中是否可以调用?是否会造成相关的寄存器混乱(汇编中可能对一些寄存器进行操作)?

2.如果是从底层开始做,类似CAPsense这类的是否存在相关算法支持内容 用汇编无法实现的?调试触摸等功能

0 Likes

汇编和C的交叉调用是可以做到的,我们的文档 AN89610 PSoC® Arm® Cortex® Code Optimization ​中有专门的章节 Mixing C and Assembler Code 来讲解如何实现汇编与C的交叉调用。是否会造成相关的寄存器混乱这个主要依赖代码的编写是否考虑周全,只能说固件的编写难度肯定比全部用C要大得多。

全部用汇编对每个组件的底层做重新编写,这种方案可能性非常小。以 CapSense 举例,该组件的底层 C 代码至少上万行,全部用汇编重写工作量太大,而且我们有些关键算法的 code 是以 lib 库文件提供的,这些库的代码不会开放给用户。

我能问一下为何会有这样的想法吗?使用汇编做项目,后续如何维护?

0 Likes

目前是16位机设计,起始程序和OTA都是汇编做的,做好后就固定了,很少会修改。主控程序也是汇编做的,这类项目一直用的汇编。

现在有个想法,PSOC 工程中reset函数或者start_c函数中直接跳转到汇编的asm_main程序中,处理初始化和OTA等功能,同时在asm_main中调用PSOC工程中的main函数,处理触摸以及预留的触摸调试I2C口功能。  有几个问题:

1. start_c-->asm_main-->main    这样的调用过程实现

2. asm_main   和 main 需要分块flash / ram, 需要在ld文件中做修改,并在源程序中指定区域范围

3. 需要建立共享变量区域,汇编和C之间交换触摸数据。

目前正在看ld文件,是否有关于这个文件的具体说明文档可以提供? 问题1 和问题2 感觉问题不大。

谢谢。

0 Likes
AlanH_86
Employee
Employee
100 replies posted 50 replies posted 25 solutions authored

The register TRM is here:

https://www.cypress.com/documentation/technical-reference-manuals/psoc-41004200-family-psoc-4-regist...

I am curious why you would want to program directly in assembly language.

Alan

0 Likes