Difference between revisions of "Linux Debug"
m (→Changing processor registers from Linux user space with imxregs) |
(→Changing processor registers from Linux user space with imxregs) |
||
Line 15: | Line 15: | ||
==Changing processor registers from Linux user space with imxregs== | ==Changing processor registers from Linux user space with imxregs== | ||
− | This tool allows you to access i. | + | This tool allows you to access i.MXL registers from Linux userspace/console. This way you debug your driver or access i.MXL hardware functionnalities directly from Linux console. |
− | First, you have enable this tool in Buildroot (package selection for target -> Hardware handling / blockdevices and filesystem maintenance -> imxregs): | + | * First, you have to enable this tool in Buildroot (package selection for target -> Hardware handling / blockdevices and filesystem maintenance -> imxregs): |
$ make menuconfig | $ make menuconfig | ||
Line 25: | Line 25: | ||
The generated file is located in buildroot/build_arm/imxregs-1.0/. Now you can copy it on your target. | The generated file is located in buildroot/build_arm/imxregs-1.0/. Now you can copy it on your target. | ||
− | To use it, you must clear PAR 1&2 registers ( | + | * To use it, you must clear PAR 1&2 registers (registers access rights) '''before''' launching Linux kernel, so in U-Boot type: |
BIOS> mw.l 0x00200008 0 | BIOS> mw.l 0x00200008 0 | ||
BIOS> mw.l 0x00210008 0 | BIOS> mw.l 0x00210008 0 | ||
Line 35: | Line 35: | ||
BIOS> run unlock_regs | BIOS> run unlock_regs | ||
− | Then in | + | * Then in Linux console/terminal, launch ''imxregs'' like that: |
# imxregs REGISTER_NAME (give it the register name as printed in iMX Ref Manual or just the begining of the name) | # imxregs REGISTER_NAME (give it the register name as printed in iMX Ref Manual or just the begining of the name) | ||
or | or | ||
Line 41: | Line 41: | ||
===Examples:=== | ===Examples:=== | ||
− | Show OCR1 registers of each GPIO Port: | + | * Show OCR1 registers of each GPIO Port: |
# imxregs OCR1 | # imxregs OCR1 | ||
− | Write 123 to OCR1_D register: | + | * Write 123 to OCR1_D register: |
# imxregs OCR1_D 123 | # imxregs OCR1_D 123 | ||
Revision as of 19:08, 11 March 2008
- Tips to do debug under linux **
Contents
Introduction
On this page, you will find usefull informations for debugging Armadeus under Linux
Testing your custom Linux kernel before flashing it
You can test a linux kernel you've generated without having to reflash your board and destroy your currently working image. Indeed Linux kernel images can be loaded and started from SDRAM with U-Boot:
BIOS> tftp 8000000 linux-kernel-2.6.16-arm.bin BIOS> bootm 8000000
Changing processor registers from Linux user space with imxregs
This tool allows you to access i.MXL registers from Linux userspace/console. This way you debug your driver or access i.MXL hardware functionnalities directly from Linux console.
- First, you have to enable this tool in Buildroot (package selection for target -> Hardware handling / blockdevices and filesystem maintenance -> imxregs):
$ make menuconfig
Once done, compile it:
$ make
The generated file is located in buildroot/build_arm/imxregs-1.0/. Now you can copy it on your target.
- To use it, you must clear PAR 1&2 registers (registers access rights) before launching Linux kernel, so in U-Boot type:
BIOS> mw.l 0x00200008 0 BIOS> mw.l 0x00210008 0
If you use it frequently, you can define a small script in U-Boot:
BIOS> setenv unlock_regs mw.l 0x00200008 0\; mw.l 0x00210008 0 BIOS> saveenv
and call it like that before launching your kernel:
BIOS> run unlock_regs
- Then in Linux console/terminal, launch imxregs like that:
# imxregs REGISTER_NAME (give it the register name as printed in iMX Ref Manual or just the begining of the name)
or
# imxregs (to dump all supported registers)
Examples:
- Show OCR1 registers of each GPIO Port:
# imxregs OCR1
- Write 123 to OCR1_D register:
# imxregs OCR1_D 123
Changing FPGA IP's registers from Linux user space with fpgaregs
This tool allows you to access FPGA registers from linux userspace/console. This way you can easily debug your driver directly from the Linux console.
First, you have enable this tool in Buildroot (package selection for target):
$ make menuconfig
Once done, compile it:
$ make
The generated file is located in buildroot/build_arm_nofpu/fpgaregs-1.0/. Now you can copy it on your target. Then in linux, launch it like that:
# fpgaregs address (for read) or fpga address value (for write)
Examples:
Show register at internal FPGA address 0x0010:
# fpgaregs 10
Write 0x0123 to FPGA register 0x0020:
# fpgaregs 20 0123