porting ARM: remap and MMU questions

Jan 15, 2009 4 Replies

Hello



I'm in the process of porting Linux on our board, based on a arm926ejs based multimedia chip. I finished U-Boot, it boots up and transfers control to Linux, sadly the latter hangs at the very beginning, printing only "Uncompressing Lin.. done, booting t".



With the help JTAG I explored contents of "log_buffer": it ends up with "Calibrating delay loop... " (seems function from calibrate_delay() at $(linux)/init/calibrate.c), nothing happens further.



As I see, calibrate_delay() gets invoked a lot later of console_init(), i.e. various messages are supposed to be printed already, bu they are not. I just suspect the problem is somewhere around MMU configuration, which is done on a very early stage, and once we get to console initialization, an invalid serial port address is used -- it's only guess though.



My questions are:



1) how to verify MMU gets configured properly or not?
2) do I have to do remap (that's 0x0 points at RAM) on ARM to start off Linux, or it can live without remap?
3) how is defined CONFIG_PAGE_OFFSET, which is used to configure MMU. I know it's in "make config", but what's behind this parameter?

Thanks.


-- Mark


The vector page is usually at 0.

A quick read of calibrate.c shows that it's waiting for a clock tick. Have you ported the system timer routine, and verified that you have a tick?

--Gene

Hello, Gene You wrote on Fri, 16 Jan 2009 02:29:03 GMT:

GSB> A quick read of calibrate.c shows that it's waiting for a clock tick. GSB> Have you ported the system timer routine, and verified that you have a GSB> tick? Thanks for your reply.

I'm afraid I have not. Where is system timer routine usually implemented, could you point me at that spot in kernel? I guess it should be somewhere in mach-/... and later invoked by platform independet code?

-- Mark

I found this, which although specific to MIPS architecture, should get you pointed in the right direction:

formatting link

"Chapter 9 : Board support - system time and timer

Linux relies on an RTC (real-time clock) device to obtain the real calendar data and time when it boots up. It relies on a system timer to advance the tick count, jiffies. If you don't provide proper time and timer code, Linux won't run. In fact it will stick in 'calibrate_delay ()' during the startup process because jiffies is never incremented. (See Appendix B for more details about Linux/MIPS startup sequence)."

--Gene

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required