Difference between revisions of "Linux Debug"

From ArmadeusWiki
Jump to: navigation, search
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.MXl registers from linux userspace/console. This way you debug your driver or access i.MXl hardware functionnalities directly from Linux console.
+
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 (register access rights) before launching Linux kernel, so in U-Boot type:
+
* 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 linux, launch imxregs like that:
+
* 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 **

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

Links


FrenchFlag.png Cette page en français