iMx6sx cortex M4 program size problem

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

iMx6sx cortex M4 program size problem

ソリューションへジャンプ
1,960件の閲覧回数
huihuang
Contributor II

Hi

Could you please help me? I am developing a system using imx6sx, and I have a problem with the M4 core. I am using the FreeRTOS BSP provided by NXP, and I want to read ADC in Cortex M4, do a simple process (filtering and level detecting), then send the result to the Cortex A9 which is running the Linux OS. I ran the RPMSG examples (the PingPong and string examples) successfully, and I thought I could enhance these to my benefit. But the problem is these examples take almost all of the 32K space available in the program memory (TCM in my case).

Is there any way to enlarge the program memory? Or are there other BSPs with a smaller footprint?

I should add a simple program (just main function with a printf function) takes 11K using this BSP, RPMSG approximately 15K, and FreeRTOS occupies 4K.

Thanks in advance Best Regards.

ラベル(2)
タグ(1)
0 件の賞賛
1 解決策
1,409件の閲覧回数
art
NXP Employee
NXP Employee

First, please note that the i.MX6SoloX processor has two TCM regions, Upper TCMU and Lower TCML, located directly one after another in the memory space. Seems that you can use them both, so, having more space for the application.

Another way is to run the code in some location other than TCM, e.g. in OCRAM or DDR. For more information, please refer to attached documents. Note that AN5127 discusses the MQX RTOS, but it can be applicable to the FreeRTOS as well.


Have a great day,
Artur

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

元の投稿で解決策を見る

4 返答(返信)
1,410件の閲覧回数
art
NXP Employee
NXP Employee

First, please note that the i.MX6SoloX processor has two TCM regions, Upper TCMU and Lower TCML, located directly one after another in the memory space. Seems that you can use them both, so, having more space for the application.

Another way is to run the code in some location other than TCM, e.g. in OCRAM or DDR. For more information, please refer to attached documents. Note that AN5127 discusses the MQX RTOS, but it can be applicable to the FreeRTOS as well.


Have a great day,
Artur

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

1,409件の閲覧回数
huihuang
Contributor II

Hi Artur,

Thanks for your helpful reply.

I used the AN5127 and changed the FreeRTOS BSP (mostly the linker command file) to boot from 0x80000000 (DDR). Also, I modified the Linux side as mentioned in the application note. The result is somewhat satisfying. Other than RPMSG, the examples work fine even when the program size exceeds from 32KB. So Thank you.

About the RPMSG example, which is crucial for my project, I suppose I must change the shared memory address somehow. The problem is during initialzing, the rpmsg init function waits for the Linux side module (rpmsg_tty.ko) to be installed. Although the module is installed correctly, the M4 application is stuck. I searched the community and found out some post in which people asked about the increasing the size of the rpmsg buffer, not in detail though.

Do you have any idea?

Thanks in advance.

Kind Regards.

0 件の賞賛
1,409件の閲覧回数
rewers
Contributor II

I have a similar problem with the i.MX7 SABRE. I would like to run RPMSG string echo example from OCRAM, but after installing the Linux module the M4 application is stuck. To run the application from OCRAM I just changed the make file to use MCIMX7D_M4_ocram.ld instead of MCIMX7D_M4_tcm.ld

Did you solved yout problem or anyone other has an idea on this issue?

0 件の賞賛
1,409件の閲覧回数
huihuang
Contributor II

I found the problem, but still I am looking for the solution. The problem is when the cortex m4 application is running from ddr (0x80000000), the interrupts, including rpmsg, are not working.

Any ideas?

Thanks.

0 件の賞賛