Hello,
I'm writing/porting a bunch of device drivers for an ARM board (am335x based) for Genode/seL4. I have an on chip debugger (flyswatter2) and can halt or resume the board's operation via the OCD (so generally it seems to work). Since you have successfully ported/written drivers for other boards (imx6 for example), I've asked myself if you have some hints, that may help me to get gdbi (ideally with OpenOCD) working. Right now my problem is that I don't know what binary file I should open gdb with, since using the resulting uimage file doesn't work for me.
If someone has some hints for me it would be greatly appreciated!
Have a nice holiday and presumably long weekend!
WKR Hinnerk
Hello again,
I've got kind of a followup question. I've got some things working (I can hold the board, read and write to memory and resume operations), what's still missing is real debug capability, which most likely comes from me not knowing which file gdb should load. I assumed it would be the image.elf, but that is stripped and therefore seems not to include any debug info.
Another somewhat related question is, if I can make sure that writes via "write<registername>(0x1234)" really happen. If my OCD works, the value doesn't seem to change (or the driver fails before that even gets executed. Is there a way to sensibly use debug-printf like statements (does "Genode::warning()" work inside a device driver?
Thank you and kind regards, Hinnerk
On Wed, May 09, 2018 at 10:32:46PM +0200, Hinnerk van Bruinehsen wrote:
Hello,
I'm writing/porting a bunch of device drivers for an ARM board (am335x based) for Genode/seL4. I have an on chip debugger (flyswatter2) and can halt or resume the board's operation via the OCD (so generally it seems to work). Since you have successfully ported/written drivers for other boards (imx6 for example), I've asked myself if you have some hints, that may help me to get gdbi (ideally with OpenOCD) working. Right now my problem is that I don't know what binary file I should open gdb with, since using the resulting uimage file doesn't work for me.
If someone has some hints for me it would be greatly appreciated!
Have a nice holiday and presumably long weekend!
WKR Hinnerk
Genode users mailing list users@lists.genode.org https://lists.genode.org/listinfo/users
Hello Hinnerk,
On Thu, May 10, 2018 at 11:55:56PM +0200, Hinnerk van Bruinehsen wrote:
Hello again,
I've got kind of a followup question. I've got some things working (I can hold the board, read and write to memory and resume operations), what's still missing is real debug capability, which most likely comes from me not knowing which file gdb should load. I assumed it would be the image.elf, but that is stripped and therefore seems not to include any debug info.
all unstripped user-land components can be found under "debug/" in your build directory. The kernel/core and bootstrap component however are located under "var/run/<run-script-name>.core" and "var/run/<run-script-name>.bootstrap". The latter is the unstripped version of our first stage kernel still running with MMU off. Whereby, core is starting with MMU enabled and is linked correspondingly to 0x80000000 and above.
Another somewhat related question is, if I can make sure that writes via "write<registername>(0x1234)" really happen. If my OCD works, the value doesn't seem to change (or the driver fails before that even gets executed. Is there a way to sensibly use debug-printf like statements (does "Genode::warning()" work inside a device driver?
Of course, Genode::warning() is working in a device driver. However, if you need a light-weight print solution, you can use Genode::raw() instead. In contrast to the other print methods, it uses a kernel call implicitly and does not use the "LOG" service. Moreover, it works unsynchronized and is therefore not thread-safe. It is part of the development version of Genode to ease debugging of time-sensitive components, like device drivers.
Regards Stefan
Thank you and kind regards, Hinnerk
On Wed, May 09, 2018 at 10:32:46PM +0200, Hinnerk van Bruinehsen wrote:
Hello,
I'm writing/porting a bunch of device drivers for an ARM board (am335x based) for Genode/seL4. I have an on chip debugger (flyswatter2) and can halt or resume the board's operation via the OCD (so generally it seems to work). Since you have successfully ported/written drivers for other boards (imx6 for example), I've asked myself if you have some hints, that may help me to get gdbi (ideally with OpenOCD) working. Right now my problem is that I don't know what binary file I should open gdb with, since using the resulting uimage file doesn't work for me.
If someone has some hints for me it would be greatly appreciated!
Have a nice holiday and presumably long weekend!
WKR Hinnerk
Genode users mailing list users@lists.genode.org https://lists.genode.org/listinfo/users
Genode users mailing list users@lists.genode.org https://lists.genode.org/listinfo/users
Hello Stefan,
thank you for your answer! On Mon, May 14, 2018 at 10:21:07AM +0200, Stefan Kalkowski wrote:
Hello Hinnerk,
On Thu, May 10, 2018 at 11:55:56PM +0200, Hinnerk van Bruinehsen wrote:
Hello again,
I've got kind of a followup question. I've got some things working (I can hold the board, read and write to memory and resume operations), what's still missing is real debug capability, which most likely comes from me not knowing which file gdb should load. I assumed it would be the image.elf, but that is stripped and therefore seems not to include any debug info.
all unstripped user-land components can be found under "debug/" in your build directory. The kernel/core and bootstrap component however are located under "var/run/<run-script-name>.core" and "var/run/<run-script-name>.bootstrap". The latter is the unstripped version of our first stage kernel still running with MMU off. Whereby, core is starting with MMU enabled and is linked correspondingly to 0x80000000 and above.
That is definitely nice to know. Am I correct in assuming that the part about the .bootstrap file are only for base-hw and don't apply to my use-case, as I'm using seL4 (and haven't ported the board/CPU to base-hw)?
Another somewhat related question is, if I can make sure that writes via "write<registername>(0x1234)" really happen. If my OCD works, the value doesn't seem to change (or the driver fails before that even gets executed. Is there a way to sensibly use debug-printf like statements (does "Genode::warning()" work inside a device driver?
Of course, Genode::warning() is working in a device driver. However, if you need a light-weight print solution, you can use Genode::raw() instead. In contrast to the other print methods, it uses a kernel call implicitly and does not use the "LOG" service. Moreover, it works unsynchronized and is therefore not thread-safe. It is part of the development version of Genode to ease debugging of time-sensitive components, like device drivers.
That's also good to know. I'll try my luck and check back if I have got any new questions. Thank you again!
Regards Hinnerk
Regards Stefan
Thank you and kind regards, Hinnerk
On Wed, May 09, 2018 at 10:32:46PM +0200, Hinnerk van Bruinehsen wrote:
Hello,
I'm writing/porting a bunch of device drivers for an ARM board (am335x based) for Genode/seL4. I have an on chip debugger (flyswatter2) and can halt or resume the board's operation via the OCD (so generally it seems to work). Since you have successfully ported/written drivers for other boards (imx6 for example), I've asked myself if you have some hints, that may help me to get gdbi (ideally with OpenOCD) working. Right now my problem is that I don't know what binary file I should open gdb with, since using the resulting uimage file doesn't work for me.
If someone has some hints for me it would be greatly appreciated!
Have a nice holiday and presumably long weekend!
WKR Hinnerk
Genode users mailing list users@lists.genode.org https://lists.genode.org/listinfo/users
Genode users mailing list users@lists.genode.org https://lists.genode.org/listinfo/users
-- Stefan Kalkowski Genode labs
Hi Hinnerk,
On Mon, May 14, 2018 at 11:04:39AM +0200, Hinnerk van Bruinehsen wrote:
Hello Stefan,
thank you for your answer! On Mon, May 14, 2018 at 10:21:07AM +0200, Stefan Kalkowski wrote:
Hello Hinnerk,
On Thu, May 10, 2018 at 11:55:56PM +0200, Hinnerk van Bruinehsen wrote:
Hello again,
I've got kind of a followup question. I've got some things working (I can hold the board, read and write to memory and resume operations), what's still missing is real debug capability, which most likely comes from me not knowing which file gdb should load. I assumed it would be the image.elf, but that is stripped and therefore seems not to include any debug info.
all unstripped user-land components can be found under "debug/" in your build directory. The kernel/core and bootstrap component however are located under "var/run/<run-script-name>.core" and "var/run/<run-script-name>.bootstrap". The latter is the unstripped version of our first stage kernel still running with MMU off. Whereby, core is starting with MMU enabled and is linked correspondingly to 0x80000000 and above.
That is definitely nice to know. Am I correct in assuming that the part about the .bootstrap file are only for base-hw and don't apply to my use-case, as I'm using seL4 (and haven't ported the board/CPU to base-hw)?
sorry for my inattentiveness. You're right this is relevant to base-hw only, but the *.core file is valid for sel4 too.
Regards Stefan
Another somewhat related question is, if I can make sure that writes via "write<registername>(0x1234)" really happen. If my OCD works, the value doesn't seem to change (or the driver fails before that even gets executed. Is there a way to sensibly use debug-printf like statements (does "Genode::warning()" work inside a device driver?
Of course, Genode::warning() is working in a device driver. However, if you need a light-weight print solution, you can use Genode::raw() instead. In contrast to the other print methods, it uses a kernel call implicitly and does not use the "LOG" service. Moreover, it works unsynchronized and is therefore not thread-safe. It is part of the development version of Genode to ease debugging of time-sensitive components, like device drivers.
That's also good to know. I'll try my luck and check back if I have got any new questions. Thank you again!
Regards Hinnerk
Regards Stefan
Thank you and kind regards, Hinnerk
On Wed, May 09, 2018 at 10:32:46PM +0200, Hinnerk van Bruinehsen wrote:
Hello,
I'm writing/porting a bunch of device drivers for an ARM board (am335x based) for Genode/seL4. I have an on chip debugger (flyswatter2) and can halt or resume the board's operation via the OCD (so generally it seems to work). Since you have successfully ported/written drivers for other boards (imx6 for example), I've asked myself if you have some hints, that may help me to get gdbi (ideally with OpenOCD) working. Right now my problem is that I don't know what binary file I should open gdb with, since using the resulting uimage file doesn't work for me.
If someone has some hints for me it would be greatly appreciated!
Have a nice holiday and presumably long weekend!
WKR Hinnerk
Genode users mailing list users@lists.genode.org https://lists.genode.org/listinfo/users
Genode users mailing list users@lists.genode.org https://lists.genode.org/listinfo/users
-- Stefan Kalkowski Genode labs