EmbDev.net

Forum: ARM programming with GCC/GNU tools confussion about ARM


von Saravanan R. (saravan)


Rate this post
useful
not useful
Hello all,
     I am newbie to this ARM technology.I am working in ARM926
processor.I have some confussions in my ARM processor.I want to port my
ARM in RTOS.I dont know what are the files to be needed for my
application.Can anybody give suggestion for my problem.i am waiting for
reply...........



thanks in advance,
saravanan.

von Clifford S. (clifford)


Rate this post
useful
not useful
Saravanan Ram wrote:
> Hello all,
>      I am newbie to this ARM technology.I am working in ARM926
> processor.I have some confussions in my ARM processor.I want to port my
> ARM in RTOS.I dont know what are the files to be needed for my
> application.Can anybody give suggestion for my problem.i am waiting for
> reply...........
>
I am not certain that your question can be answered from such little
information.

Be aware that ARM926 does not describe a specific device, but merely the
processor core of a device, Many manufacturers license ARM IP in their
processors and micro controllers, or as 'soft-cores' on FPGAs or IP on
ASICs. So what device are you using? If you are using an off the shelf
development board, you might specify that as well.

ARM9 is a significantly more sophisticated part than ARM7 used in most
low-end ARM micro-controllers. It supports higher speeds, and has an MMU
and caches to deal with. Board bring-up on ARM9 is a little more complex
that on a typical ARM7.

Likwise "RTOS" does not describe a particular Real-time operating
system, but is merely a generic term for an operating system that
supports multiple threads or processes with deterministic scheduling and
latency. What particular RTOS are you considering?

Moreover I am not sure what you mean by "I want to port my ARM in RTOS".
I assume you mean that you wish to deploy an RTOS on yout target
processor?

What toolchain are you proposing to use (since that may influence the
choice of RTOS or vice-versa). Are you intending or willing to use
commercial tools? If so what is your budget?

As the very minimum starting point you need to have brought your board
up to the point where you can begin C and/or C++ code execution in a
main() function, and support the standard library at least to the point
of enabling dynamic memory allocation. It is also helpful if you can
support stdio to a serial port, and buffered, interrupt-driven serial
I/O in general. If you have not gotten that far yet, do that before you
even think about deploying an RTOS.

Clifford

von Saravanan R. (saravan)


Rate this post
useful
not useful
Clifford Slocombe wrote:
> Saravanan Ram wrote:
>> Hello all,
>>      I am newbie to this ARM technology.I am working in ARM926
>> processor.I have some confussions in my ARM processor.I want to port my
>> ARM in RTOS.I dont know what are the files to be needed for my
>> application.Can anybody give suggestion for my problem.i am waiting for
>> reply...........
>>
> I am not certain that your question can be answered from such little
> information.
>
> Be aware that ARM926 does not describe a specific device, but merely the
> processor core of a device, Many manufacturers license ARM IP in their
> processors and micro controllers, or as 'soft-cores' on FPGAs or IP on
> ASICs. So what device are you using? If you are using an off the shelf
> development board, you might specify that as well.
>
> ARM9 is a significantly more sophisticated part than ARM7 used in most
> low-end ARM micro-controllers. It supports higher speeds, and has an MMU
> and caches to deal with. Board bring-up on ARM9 is a little more complex
> that on a typical ARM7.
>
> Likwise "RTOS" does not describe a particular Real-time operating
> system, but is merely a generic term for an operating system that
> supports multiple threads or processes with deterministic scheduling and
> latency. What particular RTOS are you considering?
>
> Moreover I am not sure what you mean by "I want to port my ARM in RTOS".
> I assume you mean that you wish to deploy an RTOS on yout target
> processor?
>
> What toolchain are you proposing to use (since that may influence the
> choice of RTOS or vice-versa). Are you intending or willing to use
> commercial tools? If so what is your budget?
>
> As the very minimum starting point you need to have brought your board
> up to the point where you can begin C and/or C++ code execution in a
> main() function, and support the standard library at least to the point
> of enabling dynamic memory allocation. It is also helpful if you can
> support stdio to a serial port, and buffered, interrupt-driven serial
> I/O in general. If you have not gotten that far yet, do that before you
> even think about deploying an RTOS.
>
> Clifford

Hi Clifford,
    Thanks for your quick reply.I am working in i.MX27 multi media
application processor.That is having in build ARM926 processor.This ARM
processor supports so many RTOS.But i choose FreeRTOS for my
processor.Because it supports so many ARM families.what mean "I want to
port my ARM in RTOS" is I have planned to build FreeRTOS for my
application from ARM966 processor.Because it is directly support ARM966
processor not my processor.so we can build it for my processor.
     I am not using any demo board for my application.If u having any
doubt from my questions plz send me.I need your help.


regards,
saravanan

von Simon E. (fordp)


Rate this post
useful
not useful
May I humbly suggest that the best place for your post is here :-

http://sourceforge.net/forum/forum.php?forum_id=382005

Good Luck with your project !

von Clifford S. (clifford)


Rate this post
useful
not useful
Simon Ellwood wrote:
> May I humbly suggest that the best place for your post is here :-
>
> http://sourceforge.net/forum/forum.php?forum_id=382005
>
> Good Luck with your project !

Good call. Also of course http://www.freertos.org/ but I imagine he has
that already.

Since Saravanan has given us little information, and the question is
very broad it is not really that simple to answer. But I would point out
the following:

The major difference between an ARM7 and an ARM9 is much higher clock
speeds, and that the latter has an MMU and caches which need to be
configured. This would be part of your C/C++ runtime start-up, which is
why I asked whether you had that done already. I am not completely
familiar with FreeRTOS nor i.MX27, but typically you would configure
such a device in the bootloader so that the RAM was remapped to address
zero, and the ROM/Flash moved to a higher location. This allows
interrupt and exception vectors to be changed dynamically at run-time,
and also allows your code to run from higher performance SDRAM. If you
are booting from NAND Flash, you will have no choice but to run your
code in RAM in any case.

Other than the ARM7/9 differences, the differences between one port and
another are primarily related to the proprietary non-ARM core device
support; the difference between an ARM922 and ARM926 is probably not
significant to the purposes of FreeRTOS. Critical to any RTOS are the
clock hooks, interrupt handling, and to a lesser extent serial I/O
(usually used as a lowest common denominator console and/or debug
facility). Clock hardware, interrupt controller architecture, and UART
peripherals all vary between ARM devices.

Even when used on the same device, it is usually your choice which of
several clock sources you might use for the RTOS. You might use a
watchdog timer or RTC, or a PWM timer - it would depend on your
application and what you might otherwise use such peripherals for. And
RTC is a good choice since they can generally perform their RTC function
while also generating clock interrupts, however you seldom get much
choice over resolution, and in most implementations the hardware usually
requires the provision of a separate 38KHz crystal for the RTC.

I would suggest that you take an existing ARM9 example, and adapt those
target specific parts mentioned above, with reference to the device's
user manual. You might also reference the device manual for the source
port to help resolve the differences. Make suer that any port you use
executes from RAM, and before you do any of that make sure you have a
system that boots and starts main() in RAM with the MMU and caches
correctly configured. The map defined in the linker script must also
match this configuration. To be honest, the provision of a suitable boot
loader is probably more complex than porting the RTOS. You may find that
Freescale provide suitable code or an application note. If you have a
JTAG debugger, it is possible during development to have that load the
code directly to RAM, but you will need to figure out how to bootstrap
the devive at some point.

As you can see I have covered quite a lot of scenarios - mostly because
you have still provided so little information.

Clifford


Clifford

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.