Discussion:
Genode on i.MX6 (eMMC Flash)
Kranthi Tej
2017-03-27 12:54:42 UTC
Permalink
Hello,

We are using a i.MX6 based board. We have been able to run Android
successfully on the board. I've built the Genode demo image for the ARM
processor by using the Wandboard build configuration (hw_wand_quad). I have
successfully generated an image of Genode demo in the build directory named
"demo.img".

Can I load the generated Genode image onto the eMMC flash of the board
using MfgTool? If so, can you please guide me on how it can be done?

Thanks in advance,
Kranthi
Stefan Kalkowski
2017-03-28 09:46:01 UTC
Permalink
Hi,
Post by Kranthi Tej
Hello,
We are using a i.MX6 based board. We have been able to run Android
successfully on the board. I've built the Genode demo image for the ARM
processor by using the Wandboard build configuration (hw_wand_quad). I
have successfully generated an image of Genode demo in the build
directory named "demo.img".
Can I load the generated Genode image onto the eMMC flash of the board
using MfgTool? If so, can you please guide me on how it can be done?
Probably, yes. I never used that tool. Once when writing a permanent
Genode image to an i.MX53 eMMC I copied over an u-boot image via
Linux/Android and booted it via the already installed u-boot loader.

Anyway, I doubt that you should write an ext2 disk image to the eMMC,
assuming that you produced that 'demo.img' image with Genode's run tool
(by using something like RUN_OPT += --include image/disk).
The run tool's 'disk' plugin does not produce a bootable disk image that
can simply used by some ARM platform, because it does not contain a
usable boot-loader for ARM.
Instead you probably have to install boot-loader and Genode image
separately. I you are using u-boot on the target platform already, you
can use the u-boot image that gets generated when using Genode's
run-tool 'uboot' plugin (RUN_OPT += --include image/uboot).

Regards
Stefan
Post by Kranthi Tej
Thanks in advance,
Kranthi
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
--
Stefan Kalkowski
Genode Labs

https://github.com/skalk · http://genode.org/
Kranthi Tej
2017-03-28 10:30:41 UTC
Permalink
Hi Stefan,

I've tried using the uboot plugin (RUN_OPT += --include image/uboot). I've
been able to generate a uImage successfully. When I tried to flash it on to
the board, it stops with following log (was observed in TeraTerm while
using the MfgTool):

U-Boot 2009.08 (Aug 16 2013 - 14:38:59)

CPU: Freescale i.MX6 family TO1.5 at 792 MHz
Thermal sensor with ratio = 175
Temperature: 42 C, calibration data 0x5524cd69
mx6q pll1: 792MHz
mx6q pll2: 528MHz
mx6q pll3: 480MHz
mx6q pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 264000000Hz
emi_slow clock: 132000000Hz
ddr clock : 528000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
nfc clock : 24000000Hz
Board: i.MX6Q-SABRESD: unknown-board Board: 0x63015 [POR ]
Boot Device: MMC
I2C: ready
DRAM: 1 GB
MMC: FSL_USDHC: 0,FSL_USDHC: 1,FSL_USDHC: 2,FSL_USDHC: 3
Using default environment

In: serial
Out: serial
Err: serial
Net: got MAC address from IIM: 00:00:00:00:00:00
FEC0 [PRIME]
Hit any key to stop autoboot: 0
## Booting kernel from Legacy Image at 10800000 ...
Image Name:
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 2075251 Bytes = 2 MB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 10c00000 ...
Image Name: uboot initramfs rootfs
Image Type: ARM Linux RAMDisk Image (gzip compressed)
Data Size: 4545326 Bytes = 4.3 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK

Starting kernel ...

Also, I'm using the Android RAMDisk Image. Would that be a potential cause
for the problem? I've used the following XML script to flash the image on
to the board (UCL file for MfgTool):

<UCL>
<CFG>
<STATE name="BootStrap" dev="MX6Q" vid="15A2" pid="0054"/>
<STATE name="Updater" dev="MSC" vid="066F" pid="37FF"/>
</CFG>

<LIST name="SabreSD-eMMC" desc="Choose eMMC as media">
<CMD state="BootStrap" type="boot" body="BootStrap" file
="u-boot-mx6q-sabresd.bin" >Loading U-boot</CMD>
<CMD state="BootStrap" type="load" file="files/demo/uimage"
address="0x10800000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" >Loading
Kernel.</CMD>
<CMD state="BootStrap" type="load" file="initramfs.cpio.gz.uboot"
address="0x10C00000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" >Loading
Initramfs.</CMD>
<CMD state="BootStrap" type="jump" > Jumping to OS image. </CMD>
<CMD state="Updater" type="push" body="$ dd if=/dev/zero of=/dev/mmcblk0
bs=512 seek=1536 count=16">clean up u-boot parameter</CMD>
<!--CMD state="Updater" type="push" body="$ echo 1 >
/sys/devices/platform/sdhci-esdhc-imx.3/mmc_host/mmc0/mmc0:0001/boot_config">access
boot partition 1</CMD-->
<CMD state="Updater" type="push" body="$ echo 0 >
/sys/block/mmcblk0boot0/force_ro">access boot partition 1</CMD>
<CMD state="Updater" type="push" body="send"
file="files/demo/mmc_img">Sending U-Boot</CMD>
<CMD state="Updater" type="push" body="$ dd if=$FILE of=/dev/mmcblk0 bs=512
seek=2 skip=2">write U-Boot to sd card</CMD>
<!-- <CMD state="Updater" type="push" body="$ dd if=$FILE of=/dev/mmcblk0p1
bs=1k seek=1 skip=1 conv=fsync">write U-Boot to sd card</CMD> -->
<CMD state="Updater" type="push" body="$ echo 8 >
/sys/devices/platform/sdhci-esdhc-imx.3/mmc_host/mmc0/mmc0:0001/boot_config">access
user partition and enable boot partion 1 to boot</CMD>
<CMD state="Updater" type="push" body="send"
file="mksdcard-android.sh.tar">Sending partition shell</CMD>
<CMD state="Updater" type="push" body="$ tar xf $FILE ">
Partitioning...</CMD>
<CMD state="Updater" type="push" body="$ sh mksdcard-android.sh
/dev/mmcblk0"> Partitioning...</CMD>
<CMD state="Updater" type="push" body="$ ls -l /dev/mmc* ">Formatting sd
partition</CMD>
<CMD state="Updater" type="push" body="pipe dd of=/dev/mmcblk0p5 bs=512"
file="files/demo/demo.img">Sending and writting demo.img</CMD>
<CMD state="Updater" type="push" body="frf">Finishing rootfs write</CMD>
<CMD state="Updater" type="push" body="$ echo Update Complete!">Done</CMD>
</LIST>
</UCL>

The script stops executing at "Jumping to OS image". Can you give me any
leads as to where I'm going wrong?

Note: I've generated the "mmc_img" file using the "create_uboot" tool
provided in the genode tools.


On Tue, Mar 28, 2017 at 3:16 PM, Stefan Kalkowski <
Post by Stefan Kalkowski
Hi,
Post by Kranthi Tej
Hello,
We are using a i.MX6 based board. We have been able to run Android
successfully on the board. I've built the Genode demo image for the ARM
processor by using the Wandboard build configuration (hw_wand_quad). I
have successfully generated an image of Genode demo in the build
directory named "demo.img".
Can I load the generated Genode image onto the eMMC flash of the board
using MfgTool? If so, can you please guide me on how it can be done?
Probably, yes. I never used that tool. Once when writing a permanent
Genode image to an i.MX53 eMMC I copied over an u-boot image via
Linux/Android and booted it via the already installed u-boot loader.
Anyway, I doubt that you should write an ext2 disk image to the eMMC,
assuming that you produced that 'demo.img' image with Genode's run tool
(by using something like RUN_OPT += --include image/disk).
The run tool's 'disk' plugin does not produce a bootable disk image that
can simply used by some ARM platform, because it does not contain a
usable boot-loader for ARM.
Instead you probably have to install boot-loader and Genode image
separately. I you are using u-boot on the target platform already, you
can use the u-boot image that gets generated when using Genode's
run-tool 'uboot' plugin (RUN_OPT += --include image/uboot).
Regards
Stefan
Post by Kranthi Tej
Thanks in advance,
Kranthi
------------------------------------------------------------
------------------
Post by Kranthi Tej
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
--
Stefan Kalkowski
Genode Labs
https://github.com/skalk · http://genode.org/
------------------------------------------------------------
------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
Stefan Kalkowski
2017-03-29 12:32:50 UTC
Permalink
Hi Kranthi Tej,
Post by Kranthi Tej
Hi Stefan,
I've tried using the uboot plugin (RUN_OPT += --include image/uboot).
I've been able to generate a uImage successfully. When I tried to flash
it on to the board, it stops with following log (was observed in
U-Boot 2009.08 (Aug 16 2013 - 14:38:59)
CPU: Freescale i.MX6 family TO1.5 at 792 MHz
Thermal sensor with ratio = 175
Temperature: 42 C, calibration data 0x5524cd69
mx6q pll1: 792MHz
mx6q pll2: 528MHz
mx6q pll3: 480MHz
mx6q pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 264000000Hz
emi_slow clock: 132000000Hz
ddr clock : 528000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
nfc clock : 24000000Hz
Board: i.MX6Q-SABRESD: unknown-board Board: 0x63015 [POR ]
As I can see you are using another board with less memory than the
Wandboard. Did you adapted the memory settings before building the
Genode image for that board?
Like it was discussed in this parallel mail thread:

http://genode-main.narkive.com/nWs1hbc8/genode-on-i-mx6q-sabre-lite
Post by Kranthi Tej
Boot Device: MMC
I2C: ready
DRAM: 1 GB
MMC: FSL_USDHC: 0,FSL_USDHC: 1,FSL_USDHC: 2,FSL_USDHC: 3
Using default environment
In: serial
Out: serial
Err: serial
Net: got MAC address from IIM: 00:00:00:00:00:00
FEC0 [PRIME]
Hit any key to stop autoboot: 0
## Booting kernel from Legacy Image at 10800000 ...
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 2075251 Bytes = 2 MB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 10c00000 ...
Image Name: uboot initramfs rootfs
Image Type: ARM Linux RAMDisk Image (gzip compressed)
Data Size: 4545326 Bytes = 4.3 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Starting kernel ...
Also, I'm using the Android RAMDisk Image. Would that be a potential
cause for the problem? I've used the following XML script to flash the
If you think the Android RAM disk might interfer with your Genode image,
being in your position I would not load it in the first place.
Post by Kranthi Tej
<UCL>
<CFG>
<STATE name="BootStrap" dev="MX6Q" vid="15A2" pid="0054"/>
<STATE name="Updater" dev="MSC" vid="066F" pid="37FF"/>
</CFG>
<LIST name="SabreSD-eMMC" desc="Choose eMMC as media">
<CMD state="BootStrap" type="boot" body="BootStrap" file
="u-boot-mx6q-sabresd.bin" >Loading U-boot</CMD>
<CMD state="BootStrap" type="load" file="files/demo/uimage"
address="0x10800000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE"
Loading Kernel.</CMD>
<CMD state="BootStrap" type="load" file="initramfs.cpio.gz.uboot"
address="0x10C00000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE"
Loading Initramfs.</CMD>
<CMD state="BootStrap" type="jump" > Jumping to OS image. </CMD>
<CMD state="Updater" type="push" body="$ dd if=/dev/zero of=/dev/mmcblk0
bs=512 seek=1536 count=16">clean up u-boot parameter</CMD>
<!--CMD state="Updater" type="push" body="$ echo 1 >
/sys/devices/platform/sdhci-esdhc-imx.3/mmc_host/mmc0/mmc0:0001/boot_config">access
boot partition 1</CMD-->
<CMD state="Updater" type="push" body="$ echo 0 >
/sys/block/mmcblk0boot0/force_ro">access boot partition 1</CMD>
<CMD state="Updater" type="push" body="send"
file="files/demo/mmc_img">Sending U-Boot</CMD>
<CMD state="Updater" type="push" body="$ dd if=$FILE of=/dev/mmcblk0
bs=512 seek=2 skip=2">write U-Boot to sd card</CMD>
<!-- <CMD state="Updater" type="push" body="$ dd if=$FILE
of=/dev/mmcblk0p1 bs=1k seek=1 skip=1 conv=fsync">write U-Boot to sd
card</CMD> -->
<CMD state="Updater" type="push" body="$ echo 8 >
/sys/devices/platform/sdhci-esdhc-imx.3/mmc_host/mmc0/mmc0:0001/boot_config">access
user partition and enable boot partion 1 to boot</CMD>
<CMD state="Updater" type="push" body="send"
file="mksdcard-android.sh.tar">Sending partition shell</CMD>
<CMD state="Updater" type="push" body="$ tar xf $FILE ">
Partitioning...</CMD>
<CMD state="Updater" type="push" body="$ sh mksdcard-android.sh
/dev/mmcblk0"> Partitioning...</CMD>
<CMD state="Updater" type="push" body="$ ls -l /dev/mmc* ">Formatting sd
partition</CMD>
<CMD state="Updater" type="push" body="pipe dd of=/dev/mmcblk0p5 bs=512"
file="files/demo/demo.img">Sending and writting demo.img</CMD>
<CMD state="Updater" type="push" body="frf">Finishing rootfs write</CMD>
<CMD state="Updater" type="push" body="$ echo Update Complete!">Done</CMD>
</LIST>
</UCL>
The script stops executing at "Jumping to OS image". Can you give me any
leads as to where I'm going wrong?
As I already told you, I do not have any experiences with that tool, but
you probably encounter the same problems like when using the uImage above.
Post by Kranthi Tej
Note: I've generated the "mmc_img" file using the "create_uboot" tool
provided in the genode tools.
I see. In contrast to the run-tool, which produces either a disk image
or uImage, this utility creates a disk image with the u-boot binary
only. I'm not sure whether you can use the same u-boot binary in between
Wandboard and your board, probably not!

We do not have a combination tool that combines u-boot and system image
to provide one final disk image to you.

Best regards
Stefan
--
Stefan Kalkowski
Genode Labs

https://github.com/skalk · http://genode.org/
Kranthi Tej
2017-04-06 05:34:06 UTC
Permalink
Hello Stefan,

Thank you for the quick response.

Yes, I've been following the parallel thread and I've made the necessary
changes in the "/repos/base/include/spec/imx6/drivers/board_base.h" file.
I've set the following values:



*UART_1_IRQ = 57,UART_1_MMIO_BASE = 0x021e8000,*
*RAM0_SIZE = 0x20000000,*

It turns out I was flashing it the wrong way. I've fixed it by drawing
insights from how Android is currently being flashed onto the device. I've
followed a similar procedure. After installing the bootloader, I've flashed
the Genode uImage (generated using RUN_OPT += --include image/uboot) onto
the device as per your advice. Flashing was successfully done. Upon booting
up, I got the following:

U-Boot 2009.08-dirty (Jul 08 2016 - 12:21:39)

CPU: Freescale i.MX6 family TO1.5 at 792 MHz
Thermal sensor with ratio = 175
Temperature: 37 C, calibration data 0x5534ce69
mx6q pll1: 792MHz
mx6q pll2: 528MHz
mx6q pll3: 480MHz
mx6q pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 264000000Hz
emi_slow clock: 132000000Hz
ddr clock : 528000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
nfc clock : 24000000Hz
Board: i.MX6Q-SABRESD: unknown-board Board: 0x63015 [POR ]
Boot Device: MMC

HAB Configuration: 0xf0, HAB State: 0x66

--------- HAB Event 1 -----------------
event data:
0xdb 0x00 0x1c 0x41 0x33 0x18 0xc0 0x00
0xca 0x00 0x14 0x00 0x02 0xc5 0x00 0x00
0x00 0x00 0x0d 0x34 0x27 0x80 0x04 0x00
0x00 0x13 0xec 0x00

--------- HAB Event 2 -----------------
event data:
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x00
0x00 0x00 0x00 0x20

--------- HAB Event 3 -----------------
event data:
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x2c
0x00 0x00 0x02 0xa0

--------- HAB Event 4 -----------------
event data:
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x20
0x00 0x00 0x00 0x01

--------- HAB Event 5 -----------------
event data:
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x06 0xe0
0x00 0x00 0x00 0x04
I2C: ready
DRAM: 1 GB
MMC: FSL_USDHC: 0,FSL_USDHC: 1,FSL_USDHC: 2,FSL_USDHC: 3
*** Warning - bad CRC or MMC, using default environment

In: serial
Out: serial
Err: serial
Found PFUZE100! deviceid=10,revid=11
Net: got MAC address from IIM: 00:00:00:00:00:00
FEC0 [PRIME]
Hit any key to stop autoboot: 0
booti: bad boot image magic
fastboot is in init......flash target is MMC:3
wait usb cable into the connector!

So, I've tried to write the image at an address and have loaded it from
there. I've did the following in the uboot prompt:

MX6Q SABRESD U-Boot > ext2load mmc 3:1 0x30000000 uImage
Loading file "uImage" from mmc device 3:1 (xxd1)
594591 bytes read

MX6Q SABRESD U-Boot > bootm 0x30000000
## Booting kernel from Legacy Image at 30000000 ...
Image Name:
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 594527 Bytes = 580.6 kB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK

Starting kernel ...

It stops here (even after adjusting the *UART* settings before building the
image). I've also tried *UART1* *(0x02020000)*, *UART3* (*0x021ec000*),
*UART4* *(**0x021f0000**)* and *UART5 (**0x021F4000**) *with the same
interrupt values.

I've built the uImage for log (make run/log) and demo (make run/demo). I'm
facing the same issue.

I'm unable to find the source of the problem. Can you give me any leads on
the possible problems?

Thanks,
Kranthi
Hello Stefan,
Thank you for the quick response.
Yes, I've been following the parallel thread and I've made the necessary
changes in the "/repos/base/include/spec/imx6/drivers/board_base.h" file.
UART_1_IRQ = 57,
UART_1_MMIO_BASE = 0x021e8000,
RAM0_SIZE = 0x20000000.
It turns out I was flashing it the wrong way. I've fixed it by drawing
insights from how Android is currently being flashed onto the device. I've
followed a similar procedure. After installing the bootloader, I've flashed
the Genode uImage (generated using RUN_OPT += --include image/uboot) onto
the device as per your advice. Flashing was successfully done. Upon booting
U-Boot 2009.08-dirty (Jul 08 2016 - 12:21:39)
CPU: Freescale i.MX6 family TO1.5 at 792 MHz
Thermal sensor with ratio = 175
Temperature: 37 C, calibration data 0x5534ce69
mx6q pll1: 792MHz
mx6q pll2: 528MHz
mx6q pll3: 480MHz
mx6q pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 264000000Hz
emi_slow clock: 132000000Hz
ddr clock : 528000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
nfc clock : 24000000Hz
Board: i.MX6Q-SABRESD: unknown-board Board: 0x63015 [POR ]
Boot Device: MMC
HAB Configuration: 0xf0, HAB State: 0x66
--------- HAB Event 1 -----------------
0xdb 0x00 0x1c 0x41 0x33 0x18 0xc0 0x00
0xca 0x00 0x14 0x00 0x02 0xc5 0x00 0x00
0x00 0x00 0x0d 0x34 0x27 0x80 0x04 0x00
0x00 0x13 0xec 0x00
--------- HAB Event 2 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x00
0x00 0x00 0x00 0x20
--------- HAB Event 3 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x2c
0x00 0x00 0x02 0xa0
--------- HAB Event 4 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x20
0x00 0x00 0x00 0x01
--------- HAB Event 5 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x06 0xe0
0x00 0x00 0x00 0x04
I2C: ready
DRAM: 1 GB
MMC: FSL_USDHC: 0,FSL_USDHC: 1,FSL_USDHC: 2,FSL_USDHC: 3
*** Warning - bad CRC or MMC, using default environment
In: serial
Out: serial
Err: serial
Found PFUZE100! deviceid=10,revid=11
Net: got MAC address from IIM: 00:00:00:00:00:00
FEC0 [PRIME]
Hit any key to stop autoboot: 0
booti: bad boot image magic
fastboot is in init......flash target is MMC:3
wait usb cable into the connector!
So, I've tried to write the image at an address and have loaded it from
MX6Q SABRESD U-Boot > ext2load mmc 3:1 0x30000000 uImage
Loading file "uImage" from mmc device 3:1 (xxd1)
594591 bytes read
MX6Q SABRESD U-Boot > bootm 0x30000000
## Booting kernel from Legacy Image at 30000000 ...
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 594527 Bytes = 580.6 kB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Starting kernel ...
It stops here (even after adjusting the UART settings before building the
image). I'm unable to find the source of the problem. Can you give me any
leads on the possible problems?
Thanks,
Kranthi
---------- Forwarded message ----------
Date: Mar 29, 2017 6:03 PM
Subject: Re: Genode on i.MX6 (eMMC Flash)
Hi Kranthi Tej,
Post by Kranthi Tej
Hi Stefan,
I've tried using the uboot plugin (RUN_OPT += --include image/uboot).
I've been able to generate a uImage successfully. When I tried to flash
it on to the board, it stops with following log (was observed in
U-Boot 2009.08 (Aug 16 2013 - 14:38:59)
CPU: Freescale i.MX6 family TO1.5 at 792 MHz
Thermal sensor with ratio = 175
Temperature: 42 C, calibration data 0x5524cd69
mx6q pll1: 792MHz
mx6q pll2: 528MHz
mx6q pll3: 480MHz
mx6q pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 264000000Hz
emi_slow clock: 132000000Hz
ddr clock : 528000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
nfc clock : 24000000Hz
Board: i.MX6Q-SABRESD: unknown-board Board: 0x63015 [POR ]
As I can see you are using another board with less memory than the
Wandboard. Did you adapted the memory settings before building the
Genode image for that board?
http://genode-main.narkive.com/nWs1hbc8/genode-on-i-mx6q-sabre-lite
Post by Kranthi Tej
Boot Device: MMC
I2C: ready
DRAM: 1 GB
MMC: FSL_USDHC: 0,FSL_USDHC: 1,FSL_USDHC: 2,FSL_USDHC: 3
Using default environment
In: serial
Out: serial
Err: serial
Net: got MAC address from IIM: 00:00:00:00:00:00
FEC0 [PRIME]
Hit any key to stop autoboot: 0
## Booting kernel from Legacy Image at 10800000 ...
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 2075251 Bytes = 2 MB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 10c00000 ...
Image Name: uboot initramfs rootfs
Image Type: ARM Linux RAMDisk Image (gzip compressed)
Data Size: 4545326 Bytes = 4.3 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Starting kernel ...
Also, I'm using the Android RAMDisk Image. Would that be a potential
cause for the problem? I've used the following XML script to flash the
If you think the Android RAM disk might interfer with your Genode image,
being in your position I would not load it in the first place.
Post by Kranthi Tej
<UCL>
<CFG>
<STATE name="BootStrap" dev="MX6Q" vid="15A2" pid="0054"/>
<STATE name="Updater" dev="MSC" vid="066F" pid="37FF"/>
</CFG>
<LIST name="SabreSD-eMMC" desc="Choose eMMC as media">
<CMD state="BootStrap" type="boot" body="BootStrap" file
="u-boot-mx6q-sabresd.bin" >Loading U-boot</CMD>
<CMD state="BootStrap" type="load" file="files/demo/uimage"
address="0x10800000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE"
Loading Kernel.</CMD>
<CMD state="BootStrap" type="load" file="initramfs.cpio.gz.uboot"
address="0x10C00000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE"
Loading Initramfs.</CMD>
<CMD state="BootStrap" type="jump" > Jumping to OS image. </CMD>
<CMD state="Updater" type="push" body="$ dd if=/dev/zero of=/dev/mmcblk0
bs=512 seek=1536 count=16">clean up u-boot parameter</CMD>
<!--CMD state="Updater" type="push" body="$ echo 1 >
/sys/devices/platform/sdhci-esdhc-imx.3/mmc_host/mmc0/mmc0:0
001/boot_config">access
Post by Kranthi Tej
boot partition 1</CMD-->
<CMD state="Updater" type="push" body="$ echo 0 >
/sys/block/mmcblk0boot0/force_ro">access boot partition 1</CMD>
<CMD state="Updater" type="push" body="send"
file="files/demo/mmc_img">Sending U-Boot</CMD>
<CMD state="Updater" type="push" body="$ dd if=$FILE of=/dev/mmcblk0
bs=512 seek=2 skip=2">write U-Boot to sd card</CMD>
<!-- <CMD state="Updater" type="push" body="$ dd if=$FILE
of=/dev/mmcblk0p1 bs=1k seek=1 skip=1 conv=fsync">write U-Boot to sd
card</CMD> -->
<CMD state="Updater" type="push" body="$ echo 8 >
/sys/devices/platform/sdhci-esdhc-imx.3/mmc_host/mmc0/mmc0:0
001/boot_config">access
Post by Kranthi Tej
user partition and enable boot partion 1 to boot</CMD>
<CMD state="Updater" type="push" body="send"
file="mksdcard-android.sh.tar">Sending partition shell</CMD>
<CMD state="Updater" type="push" body="$ tar xf $FILE ">
Partitioning...</CMD>
<CMD state="Updater" type="push" body="$ sh mksdcard-android.sh
/dev/mmcblk0"> Partitioning...</CMD>
<CMD state="Updater" type="push" body="$ ls -l /dev/mmc* ">Formatting sd
partition</CMD>
<CMD state="Updater" type="push" body="pipe dd of=/dev/mmcblk0p5 bs=512"
file="files/demo/demo.img">Sending and writting demo.img</CMD>
<CMD state="Updater" type="push" body="frf">Finishing rootfs write</CMD>
<CMD state="Updater" type="push" body="$ echo Update
Complete!">Done</CMD>
Post by Kranthi Tej
</LIST>
</UCL>
The script stops executing at "Jumping to OS image". Can you give me any
leads as to where I'm going wrong?
As I already told you, I do not have any experiences with that tool, but
you probably encounter the same problems like when using the uImage above.
Post by Kranthi Tej
Note: I've generated the "mmc_img" file using the "create_uboot" tool
provided in the genode tools.
I see. In contrast to the run-tool, which produces either a disk image
or uImage, this utility creates a disk image with the u-boot binary
only. I'm not sure whether you can use the same u-boot binary in between
Wandboard and your board, probably not!
We do not have a combination tool that combines u-boot and system image
to provide one final disk image to you.
Best regards
Stefan
--
Stefan Kalkowski
Genode Labs
https://github.com/skalk · http://genode.org/
------------------------------------------------------------
------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
Stefan Kalkowski
2017-04-11 08:25:37 UTC
Permalink
Hi,
Post by Kranthi Tej
Hello Stefan,
Thank you for the quick response.
Yes, I've been following the parallel thread and I've made the necessary
changes in the "/repos/base/include/spec/imx6/drivers/board_base.h"
*UART_1_IRQ = 57,
UART_1_MMIO_BASE = 0x021e8000,
*
*RAM0_SIZE = 0x20000000,*
Your RAM size can be increased to 0x40000000, but obviously it should
also work with less.
Post by Kranthi Tej
It turns out I was flashing it the wrong way. I've fixed it by drawing
insights from how Android is currently being flashed onto the device.
I've followed a similar procedure. After installing the bootloader, I've
flashed the Genode uImage (generated using RUN_OPT += --include
image/uboot) onto the device as per your advice. Flashing was
U-Boot 2009.08-dirty (Jul 08 2016 - 12:21:39)
CPU: Freescale i.MX6 family TO1.5 at 792 MHz
Thermal sensor with ratio = 175
Temperature: 37 C, calibration data 0x5534ce69
mx6q pll1: 792MHz
mx6q pll2: 528MHz
mx6q pll3: 480MHz
mx6q pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 264000000Hz
emi_slow clock: 132000000Hz
ddr clock : 528000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
nfc clock : 24000000Hz
Board: i.MX6Q-SABRESD: unknown-board Board: 0x63015 [POR ]
Boot Device: MMC
HAB Configuration: 0xf0, HAB State: 0x66
--------- HAB Event 1 -----------------
0xdb 0x00 0x1c 0x41 0x33 0x18 0xc0 0x00
0xca 0x00 0x14 0x00 0x02 0xc5 0x00 0x00
0x00 0x00 0x0d 0x34 0x27 0x80 0x04 0x00
0x00 0x13 0xec 0x00
--------- HAB Event 2 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x00
0x00 0x00 0x00 0x20
--------- HAB Event 3 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x2c
0x00 0x00 0x02 0xa0
--------- HAB Event 4 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x20
0x00 0x00 0x00 0x01
--------- HAB Event 5 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x06 0xe0
0x00 0x00 0x00 0x04
I2C: ready
DRAM: 1 GB
MMC: FSL_USDHC: 0,FSL_USDHC: 1,FSL_USDHC: 2,FSL_USDHC: 3
*** Warning - bad CRC or MMC, using default environment
In: serial
Out: serial
Err: serial
Found PFUZE100! deviceid=10,revid=11
Net: got MAC address from IIM: 00:00:00:00:00:00
FEC0 [PRIME]
Hit any key to stop autoboot: 0
booti: bad boot image magic
fastboot is in init......flash target is MMC:3
wait usb cable into the connector!
I think you hit some High-Assurance-Boot (HAB) problem here, and the
boot procedure therefore resets to some default boot option in this case
fastboot over USB.
Post by Kranthi Tej
So, I've tried to write the image at an address and have loaded it from
MX6Q SABRESD U-Boot > ext2load mmc 3:1 0x30000000 uImage
Loading file "uImage" from mmc device 3:1 (xxd1)
594591 bytes read
MX6Q SABRESD U-Boot > bootm 0x30000000
## Booting kernel from Legacy Image at 30000000 ...
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 594527 Bytes = 580.6 kB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Starting kernel ...
It stops here (even after adjusting the *UART* settings before building
the image). I've also tried *UART1* *(0x02020000)*, *UART3*
(*0x021ec000*), *UART4* *(**0x021f0000**)* and *UART5 (**0x021F4000**)
*with the same interrupt values.
I've built the uImage for log (make run/log) and demo (make run/demo).
I'm facing the same issue.
I'm unable to find the source of the problem. Can you give me any leads
on the possible problems?
I'm afraid I have no idea why it should still fail. I know I also
successfully booted our system on that SABRE board before, so in
principle it should work.
Of course, you can put some "log()" message at some very early stage
into the bootstrap binary, e.g. at line:

repos/base-hw/src/bootstrap/init.cc:28

If you have a JTAG debugger, you can of course breakpoint at 0x10001000
and single-step to identify the problem.

Regards Stefan
Post by Kranthi Tej
Thanks,
Kranthi
Hello Stefan,
Thank you for the quick response.
Yes, I've been following the parallel thread and I've made the
necessary changes in the
"/repos/base/include/spec/imx6/drivers/board_base.h" file. I've set
UART_1_IRQ = 57,
UART_1_MMIO_BASE = 0x021e8000,
RAM0_SIZE = 0x20000000.
It turns out I was flashing it the wrong way. I've fixed it by
drawing insights from how Android is currently being flashed onto
the device. I've followed a similar procedure. After installing the
bootloader, I've flashed the Genode uImage (generated using RUN_OPT
+= --include image/uboot) onto the device as per your advice.
U-Boot 2009.08-dirty (Jul 08 2016 - 12:21:39)
CPU: Freescale i.MX6 family TO1.5 at 792 MHz
Thermal sensor with ratio = 175
Temperature: 37 C, calibration data 0x5534ce69
mx6q pll1: 792MHz
mx6q pll2: 528MHz
mx6q pll3: 480MHz
mx6q pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 264000000Hz
emi_slow clock: 132000000Hz
ddr clock : 528000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
nfc clock : 24000000Hz
Board: i.MX6Q-SABRESD: unknown-board Board: 0x63015 [POR ]
Boot Device: MMC
HAB Configuration: 0xf0, HAB State: 0x66
--------- HAB Event 1 -----------------
0xdb 0x00 0x1c 0x41 0x33 0x18 0xc0 0x00
0xca 0x00 0x14 0x00 0x02 0xc5 0x00 0x00
0x00 0x00 0x0d 0x34 0x27 0x80 0x04 0x00
0x00 0x13 0xec 0x00
--------- HAB Event 2 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x00
0x00 0x00 0x00 0x20
--------- HAB Event 3 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x2c
0x00 0x00 0x02 0xa0
--------- HAB Event 4 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x20
0x00 0x00 0x00 0x01
--------- HAB Event 5 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x06 0xe0
0x00 0x00 0x00 0x04
I2C: ready
DRAM: 1 GB
MMC: FSL_USDHC: 0,FSL_USDHC: 1,FSL_USDHC: 2,FSL_USDHC: 3
*** Warning - bad CRC or MMC, using default environment
In: serial
Out: serial
Err: serial
Found PFUZE100! deviceid=10,revid=11
Net: got MAC address from IIM: 00:00:00:00:00:00
FEC0 [PRIME]
Hit any key to stop autoboot: 0
booti: bad boot image magic
fastboot is in init......flash target is MMC:3
wait usb cable into the connector!
So, I've tried to write the image at an address and have loaded it
MX6Q SABRESD U-Boot > ext2load mmc 3:1 0x30000000 uImage
Loading file "uImage" from mmc device 3:1 (xxd1)
594591 bytes read
MX6Q SABRESD U-Boot > bootm 0x30000000
## Booting kernel from Legacy Image at 30000000 ...
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 594527 Bytes = 580.6 kB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Starting kernel ...
It stops here (even after adjusting the UART settings before
building the image). I'm unable to find the source of the problem.
Can you give me any leads on the possible problems?
Thanks,
Kranthi
On Wed, Mar 29, 2017 at 6:18 PM, Kranthi Tej
---------- Forwarded message ----------
Date: Mar 29, 2017 6:03 PM
Subject: Re: Genode on i.MX6 (eMMC Flash)
To: "Genode OS Framework Mailing List"
Hi Kranthi Tej,
Post by Kranthi Tej
Hi Stefan,
I've tried using the uboot plugin (RUN_OPT += --include
image/uboot).
Post by Kranthi Tej
I've been able to generate a uImage successfully. When I tried
to flash
Post by Kranthi Tej
it on to the board, it stops with following log (was observed in
U-Boot 2009.08 (Aug 16 2013 - 14:38:59)
CPU: Freescale i.MX6 family TO1.5 at 792 MHz
Thermal sensor with ratio = 175
Temperature: 42 C, calibration data 0x5524cd69
mx6q pll1: 792MHz
mx6q pll2: 528MHz
mx6q pll3: 480MHz
mx6q pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 264000000Hz
emi_slow clock: 132000000Hz
ddr clock : 528000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
nfc clock : 24000000Hz
Board: i.MX6Q-SABRESD: unknown-board Board: 0x63015 [POR ]
As I can see you are using another board with less memory than the
Wandboard. Did you adapted the memory settings before building the
Genode image for that board?
http://genode-main.narkive.com/nWs1hbc8/genode-on-i-mx6q-sabre-lite
<http://genode-main.narkive.com/nWs1hbc8/genode-on-i-mx6q-sabre-lite>
Post by Kranthi Tej
Boot Device: MMC
I2C: ready
DRAM: 1 GB
MMC: FSL_USDHC: 0,FSL_USDHC: 1,FSL_USDHC: 2,FSL_USDHC: 3
Using default environment
In: serial
Out: serial
Err: serial
Net: got MAC address from IIM: 00:00:00:00:00:00
FEC0 [PRIME]
Hit any key to stop autoboot: 0
## Booting kernel from Legacy Image at 10800000 ...
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 2075251 Bytes = 2 MB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 10c00000 ...
Image Name: uboot initramfs rootfs
Image Type: ARM Linux RAMDisk Image (gzip compressed)
Data Size: 4545326 Bytes = 4.3 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Starting kernel ...
Also, I'm using the Android RAMDisk Image. Would that be a
potential
Post by Kranthi Tej
cause for the problem? I've used the following XML script to
flash the
If you think the Android RAM disk might interfer with your Genode image,
being in your position I would not load it in the first place.
Post by Kranthi Tej
<UCL>
<CFG>
<STATE name="BootStrap" dev="MX6Q" vid="15A2" pid="0054"/>
<STATE name="Updater" dev="MSC" vid="066F" pid="37FF"/>
</CFG>
<LIST name="SabreSD-eMMC" desc="Choose eMMC as media">
<CMD state="BootStrap" type="boot" body="BootStrap" file
="u-boot-mx6q-sabresd.bin" >Loading U-boot</CMD>
<CMD state="BootStrap" type="load" file="files/demo/uimage"
address="0x10800000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE"
Loading Kernel.</CMD>
<CMD state="BootStrap" type="load" file="initramfs.cpio.gz.uboot"
address="0x10C00000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE"
Loading Initramfs.</CMD>
<CMD state="BootStrap" type="jump" > Jumping to OS image. </CMD>
<CMD state="Updater" type="push" body="$ dd if=/dev/zero
of=/dev/mmcblk0
Post by Kranthi Tej
bs=512 seek=1536 count=16">clean up u-boot parameter</CMD>
<!--CMD state="Updater" type="push" body="$ echo 1 >
/sys/devices/platform/sdhci-esdhc-imx.3/mmc_host/mmc0/mmc0:0001/boot_config">access
Post by Kranthi Tej
boot partition 1</CMD-->
<CMD state="Updater" type="push" body="$ echo 0 >
/sys/block/mmcblk0boot0/force_ro">access boot partition 1</CMD>
<CMD state="Updater" type="push" body="send"
file="files/demo/mmc_img">Sending U-Boot</CMD>
<CMD state="Updater" type="push" body="$ dd if=$FILE
of=/dev/mmcblk0
Post by Kranthi Tej
bs=512 seek=2 skip=2">write U-Boot to sd card</CMD>
<!-- <CMD state="Updater" type="push" body="$ dd if=$FILE
of=/dev/mmcblk0p1 bs=1k seek=1 skip=1 conv=fsync">write U-Boot
to sd
Post by Kranthi Tej
card</CMD> -->
<CMD state="Updater" type="push" body="$ echo 8 >
/sys/devices/platform/sdhci-esdhc-imx.3/mmc_host/mmc0/mmc0:0001/boot_config">access
Post by Kranthi Tej
user partition and enable boot partion 1 to boot</CMD>
<CMD state="Updater" type="push" body="send"
file="mksdcard-android.sh.tar">Sending partition shell</CMD>
<CMD state="Updater" type="push" body="$ tar xf $FILE ">
Partitioning...</CMD>
<CMD state="Updater" type="push" body="$ sh mksdcard-android.sh
/dev/mmcblk0"> Partitioning...</CMD>
<CMD state="Updater" type="push" body="$ ls -l /dev/mmc*
">Formatting sd
Post by Kranthi Tej
partition</CMD>
<CMD state="Updater" type="push" body="pipe dd
of=/dev/mmcblk0p5 bs=512"
Post by Kranthi Tej
file="files/demo/demo.img">Sending and writting demo.img</CMD>
<CMD state="Updater" type="push" body="frf">Finishing rootfs
write</CMD>
Post by Kranthi Tej
<CMD state="Updater" type="push" body="$ echo Update
Complete!">Done</CMD>
Post by Kranthi Tej
</LIST>
</UCL>
The script stops executing at "Jumping to OS image". Can you
give me any
Post by Kranthi Tej
leads as to where I'm going wrong?
As I already told you, I do not have any experiences with that tool, but
you probably encounter the same problems like when using the uImage above.
Post by Kranthi Tej
Note: I've generated the "mmc_img" file using the
"create_uboot" tool
Post by Kranthi Tej
provided in the genode tools.
I see. In contrast to the run-tool, which produces either a disk image
or uImage, this utility creates a disk image with the u-boot binary
only. I'm not sure whether you can use the same u-boot binary in between
Wandboard and your board, probably not!
We do not have a combination tool that combines u-boot and system image
to provide one final disk image to you.
Best regards
Stefan
--
Stefan Kalkowski
Genode Labs
https://github.com/skalk · http://genode.org/
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
<https://lists.sourceforge.net/lists/listinfo/genode-main>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
--
Stefan Kalkowski
Genode Labs

https://github.com/skalk · http://genode.org/
Kranthi Tej
2017-04-12 12:04:41 UTC
Permalink
Hello Stefan,

Thank you for the hint.

As per your advice, I've placed log messages in the
repos/base-hw/src/bootstrap/init.cc file. Some of the log messages were
printed. Based on this, I've been successfully able to establish that there
is no problem with the load address as well as the UART port address. I've
been able to progress further with your help. I have placed a log message
just before

platform().enable_mmu();

in the repos/base-hw/src/bootstrap/init.cc file. It seems to print the
message. I've also placed a log message after this as well. It doesn't get
printed. I've looked into the enable_mmu() function. I've identified that
it stops at:

cpu.enable_mmu_and_caches((Genode::addr_t)core_pd->table_base);

(repos/base-hw/src/bootstrap/spec/cortex_a9/platform.cc:142)

I've been unable to find out if the problem lies with core_pd or
table_base. Could it be a possibility that the core_pd variable has been
wrongly initialized? I haven't been able to figure out where the "core_pd"
variable is being initialized. If anyone else has had a similar problem,
could you please advise about how to go through with it?

I've checked the UART, SDHC, EPIT2, AIPS1, AIPS2, CORTEX_A9_PRIVATE_MEM,
PL310, SRC base addresses with it's android counterpart (which is working
on the board). All the addresses are the same.

Kindly help me with this.

Note: Unfortunately, I do not have a JTAG debugger.

Thanks in advance,
Kranthi

On Tue, Apr 11, 2017 at 1:55 PM, Stefan Kalkowski <
Post by Stefan Kalkowski
Hi,
Post by Kranthi Tej
Hello Stefan,
Thank you for the quick response.
Yes, I've been following the parallel thread and I've made the necessary
changes in the "/repos/base/include/spec/imx6/drivers/board_base.h"
*UART_1_IRQ = 57,
UART_1_MMIO_BASE = 0x021e8000,
*
*RAM0_SIZE = 0x20000000,*
Your RAM size can be increased to 0x40000000, but obviously it should
also work with less.
Post by Kranthi Tej
It turns out I was flashing it the wrong way. I've fixed it by drawing
insights from how Android is currently being flashed onto the device.
I've followed a similar procedure. After installing the bootloader, I've
flashed the Genode uImage (generated using RUN_OPT += --include
image/uboot) onto the device as per your advice. Flashing was
U-Boot 2009.08-dirty (Jul 08 2016 - 12:21:39)
CPU: Freescale i.MX6 family TO1.5 at 792 MHz
Thermal sensor with ratio = 175
Temperature: 37 C, calibration data 0x5534ce69
mx6q pll1: 792MHz
mx6q pll2: 528MHz
mx6q pll3: 480MHz
mx6q pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 264000000Hz
emi_slow clock: 132000000Hz
ddr clock : 528000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
nfc clock : 24000000Hz
Board: i.MX6Q-SABRESD: unknown-board Board: 0x63015 [POR ]
Boot Device: MMC
HAB Configuration: 0xf0, HAB State: 0x66
--------- HAB Event 1 -----------------
0xdb 0x00 0x1c 0x41 0x33 0x18 0xc0 0x00
0xca 0x00 0x14 0x00 0x02 0xc5 0x00 0x00
0x00 0x00 0x0d 0x34 0x27 0x80 0x04 0x00
0x00 0x13 0xec 0x00
--------- HAB Event 2 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x00
0x00 0x00 0x00 0x20
--------- HAB Event 3 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x2c
0x00 0x00 0x02 0xa0
--------- HAB Event 4 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x20
0x00 0x00 0x00 0x01
--------- HAB Event 5 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x06 0xe0
0x00 0x00 0x00 0x04
I2C: ready
DRAM: 1 GB
MMC: FSL_USDHC: 0,FSL_USDHC: 1,FSL_USDHC: 2,FSL_USDHC: 3
*** Warning - bad CRC or MMC, using default environment
In: serial
Out: serial
Err: serial
Found PFUZE100! deviceid=10,revid=11
Net: got MAC address from IIM: 00:00:00:00:00:00
FEC0 [PRIME]
Hit any key to stop autoboot: 0
booti: bad boot image magic
fastboot is in init......flash target is MMC:3
wait usb cable into the connector!
I think you hit some High-Assurance-Boot (HAB) problem here, and the
boot procedure therefore resets to some default boot option in this case
fastboot over USB.
Post by Kranthi Tej
So, I've tried to write the image at an address and have loaded it from
MX6Q SABRESD U-Boot > ext2load mmc 3:1 0x30000000 uImage
Loading file "uImage" from mmc device 3:1 (xxd1)
594591 bytes read
MX6Q SABRESD U-Boot > bootm 0x30000000
## Booting kernel from Legacy Image at 30000000 ...
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 594527 Bytes = 580.6 kB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Starting kernel ...
It stops here (even after adjusting the *UART* settings before building
the image). I've also tried *UART1* *(0x02020000)*, *UART3*
(*0x021ec000*), *UART4* *(**0x021f0000**)* and *UART5 (**0x021F4000**)
*with the same interrupt values.
I've built the uImage for log (make run/log) and demo (make run/demo).
I'm facing the same issue.
I'm unable to find the source of the problem. Can you give me any leads
on the possible problems?
I'm afraid I have no idea why it should still fail. I know I also
successfully booted our system on that SABRE board before, so in
principle it should work.
Of course, you can put some "log()" message at some very early stage
repos/base-hw/src/bootstrap/init.cc:28
If you have a JTAG debugger, you can of course breakpoint at 0x10001000
and single-step to identify the problem.
Regards Stefan
Post by Kranthi Tej
Thanks,
Kranthi
Hello Stefan,
Thank you for the quick response.
Yes, I've been following the parallel thread and I've made the
necessary changes in the
"/repos/base/include/spec/imx6/drivers/board_base.h" file. I've set
UART_1_IRQ = 57,
UART_1_MMIO_BASE = 0x021e8000,
RAM0_SIZE = 0x20000000.
It turns out I was flashing it the wrong way. I've fixed it by
drawing insights from how Android is currently being flashed onto
the device. I've followed a similar procedure. After installing the
bootloader, I've flashed the Genode uImage (generated using RUN_OPT
+= --include image/uboot) onto the device as per your advice.
U-Boot 2009.08-dirty (Jul 08 2016 - 12:21:39)
CPU: Freescale i.MX6 family TO1.5 at 792 MHz
Thermal sensor with ratio = 175
Temperature: 37 C, calibration data 0x5534ce69
mx6q pll1: 792MHz
mx6q pll2: 528MHz
mx6q pll3: 480MHz
mx6q pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 264000000Hz
emi_slow clock: 132000000Hz
ddr clock : 528000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
nfc clock : 24000000Hz
Board: i.MX6Q-SABRESD: unknown-board Board: 0x63015 [POR ]
Boot Device: MMC
HAB Configuration: 0xf0, HAB State: 0x66
--------- HAB Event 1 -----------------
0xdb 0x00 0x1c 0x41 0x33 0x18 0xc0 0x00
0xca 0x00 0x14 0x00 0x02 0xc5 0x00 0x00
0x00 0x00 0x0d 0x34 0x27 0x80 0x04 0x00
0x00 0x13 0xec 0x00
--------- HAB Event 2 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x00
0x00 0x00 0x00 0x20
--------- HAB Event 3 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x2c
0x00 0x00 0x02 0xa0
--------- HAB Event 4 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x20
0x00 0x00 0x00 0x01
--------- HAB Event 5 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x06 0xe0
0x00 0x00 0x00 0x04
I2C: ready
DRAM: 1 GB
MMC: FSL_USDHC: 0,FSL_USDHC: 1,FSL_USDHC: 2,FSL_USDHC: 3
*** Warning - bad CRC or MMC, using default environment
In: serial
Out: serial
Err: serial
Found PFUZE100! deviceid=10,revid=11
Net: got MAC address from IIM: 00:00:00:00:00:00
FEC0 [PRIME]
Hit any key to stop autoboot: 0
booti: bad boot image magic
fastboot is in init......flash target is MMC:3
wait usb cable into the connector!
So, I've tried to write the image at an address and have loaded it
MX6Q SABRESD U-Boot > ext2load mmc 3:1 0x30000000 uImage
Loading file "uImage" from mmc device 3:1 (xxd1)
594591 bytes read
MX6Q SABRESD U-Boot > bootm 0x30000000
## Booting kernel from Legacy Image at 30000000 ...
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 594527 Bytes = 580.6 kB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Starting kernel ...
It stops here (even after adjusting the UART settings before
building the image). I'm unable to find the source of the problem.
Can you give me any leads on the possible problems?
Thanks,
Kranthi
On Wed, Mar 29, 2017 at 6:18 PM, Kranthi Tej
---------- Forwarded message ----------
Date: Mar 29, 2017 6:03 PM
Subject: Re: Genode on i.MX6 (eMMC Flash)
To: "Genode OS Framework Mailing List"
Hi Kranthi Tej,
Post by Kranthi Tej
Hi Stefan,
I've tried using the uboot plugin (RUN_OPT += --include
image/uboot).
Post by Kranthi Tej
I've been able to generate a uImage successfully. When I tried
to flash
Post by Kranthi Tej
it on to the board, it stops with following log (was observed
in
Post by Kranthi Tej
Post by Kranthi Tej
U-Boot 2009.08 (Aug 16 2013 - 14:38:59)
CPU: Freescale i.MX6 family TO1.5 at 792 MHz
Thermal sensor with ratio = 175
Temperature: 42 C, calibration data 0x5524cd69
mx6q pll1: 792MHz
mx6q pll2: 528MHz
mx6q pll3: 480MHz
mx6q pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 264000000Hz
emi_slow clock: 132000000Hz
ddr clock : 528000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
nfc clock : 24000000Hz
Board: i.MX6Q-SABRESD: unknown-board Board: 0x63015 [POR ]
As I can see you are using another board with less memory than
the
Post by Kranthi Tej
Wandboard. Did you adapted the memory settings before building
the
Post by Kranthi Tej
Genode image for that board?
http://genode-main.narkive.com/nWs1hbc8/genode-on-i-mx6q-
sabre-lite
Post by Kranthi Tej
<http://genode-main.narkive.com/nWs1hbc8/genode-on-i-mx6q-
sabre-lite>
Post by Kranthi Tej
Post by Kranthi Tej
Boot Device: MMC
I2C: ready
DRAM: 1 GB
MMC: FSL_USDHC: 0,FSL_USDHC: 1,FSL_USDHC: 2,FSL_USDHC: 3
Using default environment
In: serial
Out: serial
Err: serial
Net: got MAC address from IIM: 00:00:00:00:00:00
FEC0 [PRIME]
Hit any key to stop autoboot: 0
## Booting kernel from Legacy Image at 10800000 ...
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 2075251 Bytes = 2 MB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 10c00000 ...
Image Name: uboot initramfs rootfs
Image Type: ARM Linux RAMDisk Image (gzip compressed)
Data Size: 4545326 Bytes = 4.3 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Starting kernel ...
Also, I'm using the Android RAMDisk Image. Would that be a
potential
Post by Kranthi Tej
cause for the problem? I've used the following XML script to
flash the
If you think the Android RAM disk might interfer with your
Genode image,
being in your position I would not load it in the first place.
Post by Kranthi Tej
<UCL>
<CFG>
<STATE name="BootStrap" dev="MX6Q" vid="15A2" pid="0054"/>
<STATE name="Updater" dev="MSC" vid="066F" pid="37FF"/>
</CFG>
<LIST name="SabreSD-eMMC" desc="Choose eMMC as media">
<CMD state="BootStrap" type="boot" body="BootStrap" file
="u-boot-mx6q-sabresd.bin" >Loading U-boot</CMD>
<CMD state="BootStrap" type="load" file="files/demo/uimage"
address="0x10800000"
loadSection="OTH" setSection="OTH"
HasFlashHeader="FALSE"
Post by Kranthi Tej
Post by Kranthi Tej
Loading Kernel.</CMD>
<CMD state="BootStrap" type="load"
file="initramfs.cpio.gz.uboot"
Post by Kranthi Tej
Post by Kranthi Tej
address="0x10C00000"
loadSection="OTH" setSection="OTH"
HasFlashHeader="FALSE"
Post by Kranthi Tej
Post by Kranthi Tej
Loading Initramfs.</CMD>
<CMD state="BootStrap" type="jump" > Jumping to OS image.
</CMD>
Post by Kranthi Tej
Post by Kranthi Tej
<CMD state="Updater" type="push" body="$ dd if=/dev/zero
of=/dev/mmcblk0
Post by Kranthi Tej
bs=512 seek=1536 count=16">clean up u-boot parameter</CMD>
<!--CMD state="Updater" type="push" body="$ echo 1 >
/sys/devices/platform/sdhci-esdhc-imx.3/mmc_host/mmc0/
mmc0:0001/boot_config">access
Post by Kranthi Tej
Post by Kranthi Tej
boot partition 1</CMD-->
<CMD state="Updater" type="push" body="$ echo 0 >
/sys/block/mmcblk0boot0/force_ro">access boot partition
1</CMD>
Post by Kranthi Tej
Post by Kranthi Tej
<CMD state="Updater" type="push" body="send"
file="files/demo/mmc_img">Sending U-Boot</CMD>
<CMD state="Updater" type="push" body="$ dd if=$FILE
of=/dev/mmcblk0
Post by Kranthi Tej
bs=512 seek=2 skip=2">write U-Boot to sd card</CMD>
<!-- <CMD state="Updater" type="push" body="$ dd if=$FILE
of=/dev/mmcblk0p1 bs=1k seek=1 skip=1 conv=fsync">write U-Boot
to sd
Post by Kranthi Tej
card</CMD> -->
<CMD state="Updater" type="push" body="$ echo 8 >
/sys/devices/platform/sdhci-esdhc-imx.3/mmc_host/mmc0/
mmc0:0001/boot_config">access
Post by Kranthi Tej
Post by Kranthi Tej
user partition and enable boot partion 1 to boot</CMD>
<CMD state="Updater" type="push" body="send"
file="mksdcard-android.sh.tar">Sending partition shell</CMD>
<CMD state="Updater" type="push" body="$ tar xf $FILE ">
Partitioning...</CMD>
<CMD state="Updater" type="push" body="$ sh mksdcard-android.sh
/dev/mmcblk0"> Partitioning...</CMD>
<CMD state="Updater" type="push" body="$ ls -l /dev/mmc*
">Formatting sd
Post by Kranthi Tej
partition</CMD>
<CMD state="Updater" type="push" body="pipe dd
of=/dev/mmcblk0p5 bs=512"
Post by Kranthi Tej
file="files/demo/demo.img">Sending and writting demo.img</CMD>
<CMD state="Updater" type="push" body="frf">Finishing rootfs
write</CMD>
Post by Kranthi Tej
<CMD state="Updater" type="push" body="$ echo Update
Complete!">Done</CMD>
Post by Kranthi Tej
</LIST>
</UCL>
The script stops executing at "Jumping to OS image". Can you
give me any
Post by Kranthi Tej
leads as to where I'm going wrong?
As I already told you, I do not have any experiences with that
tool, but
you probably encounter the same problems like when using the
uImage above.
Post by Kranthi Tej
Note: I've generated the "mmc_img" file using the
"create_uboot" tool
Post by Kranthi Tej
provided in the genode tools.
I see. In contrast to the run-tool, which produces either a disk image
or uImage, this utility creates a disk image with the u-boot
binary
Post by Kranthi Tej
only. I'm not sure whether you can use the same u-boot binary in
between
Wandboard and your board, probably not!
We do not have a combination tool that combines u-boot and system image
to provide one final disk image to you.
Best regards
Stefan
--
Stefan Kalkowski
Genode Labs
https://github.com/skalk · http://genode.org/
------------------------------------------------------------
------------------
Post by Kranthi Tej
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
<https://lists.sourceforge.net/lists/listinfo/genode-main>
------------------------------------------------------------
------------------
Post by Kranthi Tej
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
--
Stefan Kalkowski
Genode Labs
https://github.com/skalk · http://genode.org/
------------------------------------------------------------
------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
Kranthi Tej
2017-04-16 14:15:36 UTC
Permalink
Hello,

Following up on the previous email, I've stumbled upon something while
debugging. I've debugged the enable_mmu_and_caches function line by line.
I've discovered that the lines which involved the address worked fine. It
stops at:

Sctlr::enable_mmu_and_caches();

(repos/base-hw/src/core/include/spec/arm/cpu_support.h:509)

I've debugged (placed log messages after every line) the function further
and observed that the problem is with

Sctlr::write(v) function

(repos/base-hw/src/core/include/spec/arm/cpu_support.h:111)

I've looked into the write function. But, I haven't been able to pinpoint
what was going wrong. Could it be a problem with the function? Or, could it
be a problem with the value being passed to it? (I haven't been completely
able to tell that the problem isn't with the address. It could still be a
problem.)

I've also tried using the images built by Genode - 15.02 and 16.05. It
stops with a "Pagefault in core thread" message after "kernel initialized".

Could you please give me any pointers to go forward? I'm stuck here. Your
help will be greatly appreciated.

Note: I've printed the value of core_pd->table base. It is 104a8000.

Thanks in advance,
Kranthi
Post by Kranthi Tej
Hello Stefan,
Thank you for the hint.
As per your advice, I've placed log messages in the repos/base-hw/src/
bootstrap/init.cc file. Some of the log messages were printed. Based on
this, I've been successfully able to establish that there is no problem
with the load address as well as the UART port address. I've been able to
progress further with your help. I have placed a log message just before
platform().enable_mmu();
in the repos/base-hw/src/bootstrap/init.cc file. It seems to print the
message. I've also placed a log message after this as well. It doesn't get
printed. I've looked into the enable_mmu() function. I've identified that
cpu.enable_mmu_and_caches((Genode::addr_t)core_pd->table_base);
(repos/base-hw/src/bootstrap/spec/cortex_a9/platform.cc:142)
I've been unable to find out if the problem lies with core_pd or
table_base. Could it be a possibility that the core_pd variable has been
wrongly initialized? I haven't been able to figure out where the "core_pd"
variable is being initialized. If anyone else has had a similar problem,
could you please advise about how to go through with it?
I've checked the UART, SDHC, EPIT2, AIPS1, AIPS2, CORTEX_A9_PRIVATE_MEM,
PL310, SRC base addresses with it's android counterpart (which is working
on the board). All the addresses are the same.
Kindly help me with this.
Note: Unfortunately, I do not have a JTAG debugger.
Thanks in advance,
Kranthi
On Tue, Apr 11, 2017 at 1:55 PM, Stefan Kalkowski <
Post by Stefan Kalkowski
Hi,
Post by Kranthi Tej
Hello Stefan,
Thank you for the quick response.
Yes, I've been following the parallel thread and I've made the necessary
changes in the "/repos/base/include/spec/imx6/drivers/board_base.h"
*UART_1_IRQ = 57,
UART_1_MMIO_BASE = 0x021e8000,
*
*RAM0_SIZE = 0x20000000,*
Your RAM size can be increased to 0x40000000, but obviously it should
also work with less.
Post by Kranthi Tej
It turns out I was flashing it the wrong way. I've fixed it by drawing
insights from how Android is currently being flashed onto the device.
I've followed a similar procedure. After installing the bootloader, I've
flashed the Genode uImage (generated using RUN_OPT += --include
image/uboot) onto the device as per your advice. Flashing was
U-Boot 2009.08-dirty (Jul 08 2016 - 12:21:39)
CPU: Freescale i.MX6 family TO1.5 at 792 MHz
Thermal sensor with ratio = 175
Temperature: 37 C, calibration data 0x5534ce69
mx6q pll1: 792MHz
mx6q pll2: 528MHz
mx6q pll3: 480MHz
mx6q pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 264000000Hz
emi_slow clock: 132000000Hz
ddr clock : 528000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
nfc clock : 24000000Hz
Board: i.MX6Q-SABRESD: unknown-board Board: 0x63015 [POR ]
Boot Device: MMC
HAB Configuration: 0xf0, HAB State: 0x66
--------- HAB Event 1 -----------------
0xdb 0x00 0x1c 0x41 0x33 0x18 0xc0 0x00
0xca 0x00 0x14 0x00 0x02 0xc5 0x00 0x00
0x00 0x00 0x0d 0x34 0x27 0x80 0x04 0x00
0x00 0x13 0xec 0x00
--------- HAB Event 2 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x00
0x00 0x00 0x00 0x20
--------- HAB Event 3 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x2c
0x00 0x00 0x02 0xa0
--------- HAB Event 4 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x20
0x00 0x00 0x00 0x01
--------- HAB Event 5 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x06 0xe0
0x00 0x00 0x00 0x04
I2C: ready
DRAM: 1 GB
MMC: FSL_USDHC: 0,FSL_USDHC: 1,FSL_USDHC: 2,FSL_USDHC: 3
*** Warning - bad CRC or MMC, using default environment
In: serial
Out: serial
Err: serial
Found PFUZE100! deviceid=10,revid=11
Net: got MAC address from IIM: 00:00:00:00:00:00
FEC0 [PRIME]
Hit any key to stop autoboot: 0
booti: bad boot image magic
fastboot is in init......flash target is MMC:3
wait usb cable into the connector!
I think you hit some High-Assurance-Boot (HAB) problem here, and the
boot procedure therefore resets to some default boot option in this case
fastboot over USB.
Post by Kranthi Tej
So, I've tried to write the image at an address and have loaded it from
MX6Q SABRESD U-Boot > ext2load mmc 3:1 0x30000000 uImage
Loading file "uImage" from mmc device 3:1 (xxd1)
594591 bytes read
MX6Q SABRESD U-Boot > bootm 0x30000000
## Booting kernel from Legacy Image at 30000000 ...
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 594527 Bytes = 580.6 kB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Starting kernel ...
It stops here (even after adjusting the *UART* settings before building
the image). I've also tried *UART1* *(0x02020000)*, *UART3*
(*0x021ec000*), *UART4* *(**0x021f0000**)* and *UART5 (**0x021F4000**)
*with the same interrupt values.
I've built the uImage for log (make run/log) and demo (make run/demo).
I'm facing the same issue.
I'm unable to find the source of the problem. Can you give me any leads
on the possible problems?
I'm afraid I have no idea why it should still fail. I know I also
successfully booted our system on that SABRE board before, so in
principle it should work.
Of course, you can put some "log()" message at some very early stage
repos/base-hw/src/bootstrap/init.cc:28
If you have a JTAG debugger, you can of course breakpoint at 0x10001000
and single-step to identify the problem.
Regards Stefan
Post by Kranthi Tej
Thanks,
Kranthi
Hello Stefan,
Thank you for the quick response.
Yes, I've been following the parallel thread and I've made the
necessary changes in the
"/repos/base/include/spec/imx6/drivers/board_base.h" file. I've set
UART_1_IRQ = 57,
UART_1_MMIO_BASE = 0x021e8000,
RAM0_SIZE = 0x20000000.
It turns out I was flashing it the wrong way. I've fixed it by
drawing insights from how Android is currently being flashed onto
the device. I've followed a similar procedure. After installing the
bootloader, I've flashed the Genode uImage (generated using RUN_OPT
+= --include image/uboot) onto the device as per your advice.
Flashing was successfully done. Upon booting up, I got the
U-Boot 2009.08-dirty (Jul 08 2016 - 12:21:39)
CPU: Freescale i.MX6 family TO1.5 at 792 MHz
Thermal sensor with ratio = 175
Temperature: 37 C, calibration data 0x5534ce69
mx6q pll1: 792MHz
mx6q pll2: 528MHz
mx6q pll3: 480MHz
mx6q pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 264000000Hz
emi_slow clock: 132000000Hz
ddr clock : 528000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
nfc clock : 24000000Hz
Board: i.MX6Q-SABRESD: unknown-board Board: 0x63015 [POR ]
Boot Device: MMC
HAB Configuration: 0xf0, HAB State: 0x66
--------- HAB Event 1 -----------------
0xdb 0x00 0x1c 0x41 0x33 0x18 0xc0 0x00
0xca 0x00 0x14 0x00 0x02 0xc5 0x00 0x00
0x00 0x00 0x0d 0x34 0x27 0x80 0x04 0x00
0x00 0x13 0xec 0x00
--------- HAB Event 2 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x00
0x00 0x00 0x00 0x20
--------- HAB Event 3 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x2c
0x00 0x00 0x02 0xa0
--------- HAB Event 4 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x04 0x20
0x00 0x00 0x00 0x01
--------- HAB Event 5 -----------------
0xdb 0x00 0x14 0x41 0x33 0x0c 0xa0 0x00
0x00 0x00 0x00 0x00 0x27 0x80 0x06 0xe0
0x00 0x00 0x00 0x04
I2C: ready
DRAM: 1 GB
MMC: FSL_USDHC: 0,FSL_USDHC: 1,FSL_USDHC: 2,FSL_USDHC: 3
*** Warning - bad CRC or MMC, using default environment
In: serial
Out: serial
Err: serial
Found PFUZE100! deviceid=10,revid=11
Net: got MAC address from IIM: 00:00:00:00:00:00
FEC0 [PRIME]
Hit any key to stop autoboot: 0
booti: bad boot image magic
fastboot is in init......flash target is MMC:3
wait usb cable into the connector!
So, I've tried to write the image at an address and have loaded it
MX6Q SABRESD U-Boot > ext2load mmc 3:1 0x30000000 uImage
Loading file "uImage" from mmc device 3:1 (xxd1)
594591 bytes read
MX6Q SABRESD U-Boot > bootm 0x30000000
## Booting kernel from Legacy Image at 30000000 ...
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 594527 Bytes = 580.6 kB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Starting kernel ...
It stops here (even after adjusting the UART settings before
building the image). I'm unable to find the source of the problem.
Can you give me any leads on the possible problems?
Thanks,
Kranthi
On Wed, Mar 29, 2017 at 6:18 PM, Kranthi Tej
---------- Forwarded message ----------
Date: Mar 29, 2017 6:03 PM
Subject: Re: Genode on i.MX6 (eMMC Flash)
To: "Genode OS Framework Mailing List"
Hi Kranthi Tej,
Post by Kranthi Tej
Hi Stefan,
I've tried using the uboot plugin (RUN_OPT += --include
image/uboot).
Post by Kranthi Tej
I've been able to generate a uImage successfully. When I tried
to flash
Post by Kranthi Tej
it on to the board, it stops with following log (was observed
in
Post by Kranthi Tej
Post by Kranthi Tej
U-Boot 2009.08 (Aug 16 2013 - 14:38:59)
CPU: Freescale i.MX6 family TO1.5 at 792 MHz
Thermal sensor with ratio = 175
Temperature: 42 C, calibration data 0x5524cd69
mx6q pll1: 792MHz
mx6q pll2: 528MHz
mx6q pll3: 480MHz
mx6q pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 264000000Hz
emi_slow clock: 132000000Hz
ddr clock : 528000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
nfc clock : 24000000Hz
Board: i.MX6Q-SABRESD: unknown-board Board: 0x63015 [POR ]
As I can see you are using another board with less memory than
the
Post by Kranthi Tej
Wandboard. Did you adapted the memory settings before building
the
Post by Kranthi Tej
Genode image for that board?
http://genode-main.narkive.com/nWs1hbc8/genode-on-i-mx6q-sa
bre-lite
Post by Kranthi Tej
<http://genode-main.narkive.com/nWs1hbc8/genode-on-i-mx6q-s
abre-lite>
Post by Kranthi Tej
Post by Kranthi Tej
Boot Device: MMC
I2C: ready
DRAM: 1 GB
MMC: FSL_USDHC: 0,FSL_USDHC: 1,FSL_USDHC: 2,FSL_USDHC: 3
Using default environment
In: serial
Out: serial
Err: serial
Net: got MAC address from IIM: 00:00:00:00:00:00
FEC0 [PRIME]
Hit any key to stop autoboot: 0
## Booting kernel from Legacy Image at 10800000 ...
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 2075251 Bytes = 2 MB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 10c00000 ...
Image Name: uboot initramfs rootfs
Image Type: ARM Linux RAMDisk Image (gzip compressed)
Data Size: 4545326 Bytes = 4.3 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Starting kernel ...
Also, I'm using the Android RAMDisk Image. Would that be a
potential
Post by Kranthi Tej
cause for the problem? I've used the following XML script to
flash the
If you think the Android RAM disk might interfer with your
Genode image,
being in your position I would not load it in the first place.
Post by Kranthi Tej
<UCL>
<CFG>
<STATE name="BootStrap" dev="MX6Q" vid="15A2" pid="0054"/>
<STATE name="Updater" dev="MSC" vid="066F" pid="37FF"/>
</CFG>
<LIST name="SabreSD-eMMC" desc="Choose eMMC as media">
<CMD state="BootStrap" type="boot" body="BootStrap" file
="u-boot-mx6q-sabresd.bin" >Loading U-boot</CMD>
<CMD state="BootStrap" type="load" file="files/demo/uimage"
address="0x10800000"
loadSection="OTH" setSection="OTH"
HasFlashHeader="FALSE"
Post by Kranthi Tej
Post by Kranthi Tej
Loading Kernel.</CMD>
<CMD state="BootStrap" type="load"
file="initramfs.cpio.gz.uboot"
Post by Kranthi Tej
Post by Kranthi Tej
address="0x10C00000"
loadSection="OTH" setSection="OTH"
HasFlashHeader="FALSE"
Post by Kranthi Tej
Post by Kranthi Tej
Loading Initramfs.</CMD>
<CMD state="BootStrap" type="jump" > Jumping to OS image.
</CMD>
Post by Kranthi Tej
Post by Kranthi Tej
<CMD state="Updater" type="push" body="$ dd if=/dev/zero
of=/dev/mmcblk0
Post by Kranthi Tej
bs=512 seek=1536 count=16">clean up u-boot parameter</CMD>
<!--CMD state="Updater" type="push" body="$ echo 1 >
0001/boot_config">access
Post by Kranthi Tej
Post by Kranthi Tej
boot partition 1</CMD-->
<CMD state="Updater" type="push" body="$ echo 0 >
/sys/block/mmcblk0boot0/force_ro">access boot partition
1</CMD>
Post by Kranthi Tej
Post by Kranthi Tej
<CMD state="Updater" type="push" body="send"
file="files/demo/mmc_img">Sending U-Boot</CMD>
<CMD state="Updater" type="push" body="$ dd if=$FILE
of=/dev/mmcblk0
Post by Kranthi Tej
bs=512 seek=2 skip=2">write U-Boot to sd card</CMD>
<!-- <CMD state="Updater" type="push" body="$ dd if=$FILE
of=/dev/mmcblk0p1 bs=1k seek=1 skip=1 conv=fsync">write U-Boot
to sd
Post by Kranthi Tej
card</CMD> -->
<CMD state="Updater" type="push" body="$ echo 8 >
0001/boot_config">access
Post by Kranthi Tej
Post by Kranthi Tej
user partition and enable boot partion 1 to boot</CMD>
<CMD state="Updater" type="push" body="send"
file="mksdcard-android.sh.tar">Sending partition shell</CMD>
<CMD state="Updater" type="push" body="$ tar xf $FILE ">
Partitioning...</CMD>
<CMD state="Updater" type="push" body="$ sh
mksdcard-android.sh
Post by Kranthi Tej
Post by Kranthi Tej
/dev/mmcblk0"> Partitioning...</CMD>
<CMD state="Updater" type="push" body="$ ls -l /dev/mmc*
">Formatting sd
Post by Kranthi Tej
partition</CMD>
<CMD state="Updater" type="push" body="pipe dd
of=/dev/mmcblk0p5 bs=512"
Post by Kranthi Tej
file="files/demo/demo.img">Sending and writting
demo.img</CMD>
Post by Kranthi Tej
Post by Kranthi Tej
<CMD state="Updater" type="push" body="frf">Finishing rootfs
write</CMD>
Post by Kranthi Tej
<CMD state="Updater" type="push" body="$ echo Update
Complete!">Done</CMD>
Post by Kranthi Tej
</LIST>
</UCL>
The script stops executing at "Jumping to OS image". Can you
give me any
Post by Kranthi Tej
leads as to where I'm going wrong?
As I already told you, I do not have any experiences with that
tool, but
you probably encounter the same problems like when using the
uImage above.
Post by Kranthi Tej
Note: I've generated the "mmc_img" file using the
"create_uboot" tool
Post by Kranthi Tej
provided in the genode tools.
I see. In contrast to the run-tool, which produces either a disk
image
or uImage, this utility creates a disk image with the u-boot
binary
Post by Kranthi Tej
only. I'm not sure whether you can use the same u-boot binary in
between
Wandboard and your board, probably not!
We do not have a combination tool that combines u-boot and
system image
to provide one final disk image to you.
Best regards
Stefan
--
Stefan Kalkowski
Genode Labs
https://github.com/skalk · http://genode.org/
-----------------------------------------------------------
-------------------
Post by Kranthi Tej
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
<https://lists.sourceforge.net/lists/listinfo/genode-main>
------------------------------------------------------------
------------------
Post by Kranthi Tej
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
--
Stefan Kalkowski
Genode Labs
https://github.com/skalk · http://genode.org/
------------------------------------------------------------
------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
Martin Stein
2017-04-18 12:35:41 UTC
Permalink
Hi Kranthi Tej,
Post by Kranthi Tej
Following up on the previous email, I've stumbled upon something while
debugging. I've debugged the enable_mmu_and_caches function line by
line. I've discovered that the lines which involved the address worked
Sctlr::enable_mmu_and_caches();
(repos/base-hw/src/core/include/spec/arm/cpu_support.h:509)
I've debugged (placed log messages after every line) the function
further and observed that the problem is with
Sctlr::write(v) function
(repos/base-hw/src/core/include/spec/arm/cpu_support.h:111)
I've looked into the write function. But, I haven't been able to
pinpoint what was going wrong. Could it be a problem with the function?
Or, could it be a problem with the value being passed to it? (I haven't
been completely able to tell that the problem isn't with the address. It
could still be a problem.)
I've also tried using the images built by Genode - 15.02 and 16.05. It
stops with a "Pagefault in core thread" message after "kernel initialized".
Most likely it's not a problem with the write function but with the
hardware implications of this specific write. This is the point where
memory-management unit and caches are switched on for the first time
implicitely moving execution from the physical to a virtual address
space. As the Kernel has no pager, this means that the page table behind
the virtual address space must already contain all stuff that is
essential to the Kernel (and the Core main/pager functionality).
Post by Kranthi Tej
Could you please give me any pointers to go forward? I'm stuck here.
Your help will be greatly appreciated.
I would lookup the pagefault IP denoted in the pagefault message first
using 'genode-arm-objdump -DCl <BUILD_DIR>/var/run/<RUN_NAME>.core'.
This should give you a hint what is missing in your page table. The MMIO
regions to be included in the early page table are defined in [1].

It might help if you post the whole serial output of your test.

Cheers,
Martin

[1] base-hw/src/bootstrap/spec/imx6/platform.cc
Kranthi Tej
2017-04-20 11:15:18 UTC
Permalink
Hello Martin,

Thank you for the response.
Post by Martin Stein
Most likely it's not a problem with the write function but with the
hardware implications of this specific write. This is the point where
memory-management unit and caches are switched on for the first time
implicitely moving execution from the physical to a virtual address
space. As the Kernel has no pager, this means that the page table behind
the virtual address space must already contain all stuff that is
essential to the Kernel (and the Core main/pager functionality).
You were right about the write function. It was not the problem. I had
accidentally placed a log message before the init_log() service was started
in the repos/base-hw/src/bootstrap/init.cc file. That is why I couldn't
reach the "kernel initialized" part in Genode 17.02.
Post by Martin Stein
I would lookup the pagefault IP denoted in the pagefault message first
using 'genode-arm-objdump -DCl <BUILD_DIR>/var/run/<RUN_NAME>.core'.
I've taken the objdump of the file as you have suggested. The pagefault
occurs at ip=0x200374f4. I've checked the corresponding line in the objdump
output. It seems to correspond to a part of the prepare_init_main_thread
function in [1]. This is the line:

_ZN6Genode17Native_capabilityaSERKS0_():
/home/kranthitej/Desktop/BTP/BTP_Latest/genode-master/repos/base/include/base/native_capability.h:93
200374f4: e7975003 ldr r5, [r7, r3]

I've also uploaded the objdump output at:
https://drive.google.com/open?id=0B0jItjAniGQxR2FmWURsT1BZS0U (for
reference)
Post by Martin Stein
This should give you a hint what is missing in your page table. The MMIO
regions to be included in the early page table are defined in [1].
I've referred to the file you've suggested. I've stumbled upon variables
which seem to have been defined in [2]. These are the values I'm currently
using:

/* normal RAM */
RAM0_BASE = 0x10000000,
RAM0_SIZE = 0x20000000,

UART_1_IRQ = 58,
UART_1_MMIO_BASE = 0x02020000,
UART_1_MMIO_SIZE = 0x00004000,

/* CPU */
CORTEX_A9_PRIVATE_MEM_BASE = 0x00a00000,
CORTEX_A9_PRIVATE_MEM_SIZE = 0x00002000,
CORTEX_A9_PRIVATE_TIMER_CLK = 395037500,
CORTEX_A9_PRIVATE_TIMER_DIV = 170,

/* L2 cache controller */
PL310_MMIO_BASE = 0x00a02000,
PL310_MMIO_SIZE = 0x00001000,
Post by Martin Stein
It might help if you post the whole serial output of your test.
The following is the serial output of my test. I've used "log" image
instead of using "demo":

MX6Q SABRESD U-Boot > ext2load mmc 3:1 0x30000000 uImage
Loading file "uImage" from mmc device 3:1 (xxd1)
593794 bytes read

MX6Q SABRESD U-Boot > bootm 0x30000000
## Booting kernel from Legacy Image at 30000000 ...
Image Name:
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 593730 Bytes = 579.8 kB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK

Starting kernel ...

:virt_alloc: Allocator 0x200c40b4 dump:
Block: [0x1000,0x10001000] size=0x10000000 avail=0x10000000
max_avail=0x10000000
Block: [0x1057d000,0x20001000] size=0xfa84000 avail=0xfa84000
max_avail=0xbfe8b000
Block: [0x20174000,0x20175000] size=0x1000 avail=0x0 max_avail=0x0
Block: [0x20175000,0xe0000000] size=0xbfe8b000 avail=0xbfe8b000
max_avail=0xbfe8b000
Block: [0xf0004000,0xf0005000] size=0x1000 avail=0x0 max_avail=0xbfe8b000
Block: [0xf0007000,0xf0008000] size=0x1000 avail=0x0 max_avail=0x0
Block: [0xf0009000,0xf000a000] size=0x1000 avail=0x0 max_avail=0xffe5000
Block: [0xf000a000,0xfffef000] size=0xffe5000 avail=0xffe5000
max_avail=0xffe5000
=> mem_size=4019159040 (3832 MB) / mem_avail=4019142656 (3832 MB)

:phys_alloc: Allocator 0x200c3048 dump:
Block: [0x105bf000,0x105c0000] size=0x1000 avail=0x0 max_avail=0x0
Block: [0x105c0000,0x105c1000] size=0x1000 avail=0x0 max_avail=0x1fa3d000
Block: [0x105c1000,0x105c2000] size=0x1000 avail=0x0 max_avail=0x0
Block: [0x105c2000,0x105c3000] size=0x1000 avail=0x0 max_avail=0x1fa3d000
Block: [0x105c3000,0x30000000] size=0x1fa3d000 avail=0x1fa3d000
max_avail=0x1fa3d000
=> mem_size=530845696 (506 MB) / mem_avail=530829312 (506 MB)

:io_mem_alloc: Allocator 0x200c512c dump:
Block: [0x0,0x105bf000] size=0x105bf000 avail=0x105bf000
max_avail=0xcfffffff
Block: [0x30000000,0xffffffff] size=0xcfffffff avail=0xcfffffff
max_avail=0xcfffffff
=> mem_size=3764121599 (3589 MB) / mem_avail=3764121599 (3589 MB)

:io_port_alloc: Allocator 0x200c6198 dump:
=> mem_size=0 (0 MB) / mem_avail=0 (0 MB)

:irq_alloc: Allocator 0x200c7204 dump:
Block: [0x0,0x1] size=0x1 avail=0x1 max_avail=0x1
Block: [0x2,0x1d] size=0x1b avail=0x1b max_avail=0x3e2
Block: [0x1e,0x400] size=0x3e2 avail=0x3e2 max_avail=0x3e2
=> mem_size=1022 (0 MB) / mem_avail=1022 (0 MB)

:rom_fs: ROM modules:
ROM: [10176000,10176158) config
ROM: [10152000,10172178) init
ROM: [100d5000,101519a4) ld.lib.so
ROM: [10173000,10175598) test-log


kernel initialized
Error: page fault in core thread (core): ip=0x200374f4 fault=0x4ce79f8

I've observed that all my address ranges (except phys_alloc) in the serial
output have a negative offset of 0x30000 to the output mentioned in this:
https://sourceforge.net/p/genode/mailman/message/35743536/ (which seems to
be working).

However, the phys_alloc address range has a negative offset of 0x60000. Can
you give me your insights on this? Could it be a source of the problem? If
yes, how can I go about resolving it?
Post by Martin Stein
Cheers,
Martin
Thanks in advance,
Kranthi

[1] repos/base-hw/src/lib/base/thread_bootstrap.cc
[2] repos/base/include/spec/imx6/drivers/board_base.h
Stefan Kalkowski
2017-04-21 09:00:59 UTC
Permalink
Hi Kranthi,
Post by Kranthi Tej
Hello Martin,
Thank you for the response.
Most likely it's not a problem with the write function but with the
hardware implications of this specific write. This is the point where
memory-management unit and caches are switched on for the first time
implicitely moving execution from the physical to a virtual address
space. As the Kernel has no pager, this means that the page table behind
the virtual address space must already contain all stuff that is
essential to the Kernel (and the Core main/pager functionality).
You were right about the write function. It was not the problem. I had
accidentally placed a log message before the init_log() service was
started in the repos/base-hw/src/bootstrap/init.cc file. That is why I
couldn't reach the "kernel initialized" part in Genode 17.02.
I just wanted to add: You cannot print a message within bootstrap after
enabling the MMU until the core component is started. Due to the fact,
that the serial log console for bootstrap is initialized using the
physical address of the UART's I/O registers, because bootstrap is first
running with disabled MMU. When the MMU is enabled there are no 1:1
mappings of the UART's I/O registers, but they are somewhere above
0xf0000000. Within the core component the serial log console is
initialized using the correct virtual memory address of the UART's I/O
registers, that is why you can print log messages again in core.

I wonder if you have made any other changes. Can you please verify to
change the values of RAM and UART in the board_base.h file only? So we
can be sure to not hunt some other artifact?

regards
Stefan
Post by Kranthi Tej
I would lookup the pagefault IP denoted in the pagefault message first
using 'genode-arm-objdump -DCl <BUILD_DIR>/var/run/<RUN_NAME>.core'.
I've taken the objdump of the file as you have suggested. The pagefault
occurs at ip=0x200374f4. I've checked the corresponding line in the
objdump output. It seems to correspond to a part of the
/home/kranthitej/Desktop/BTP/BTP_Latest/genode-master/repos/base/include/base/native_capability.h:93
200374f4:e7975003 ldrr5, [r7, r3]
https://drive.google.com/open?id=0B0jItjAniGQxR2FmWURsT1BZS0U (for
reference)
This should give you a hint what is missing in your page table. The MMIO
regions to be included in the early page table are defined in [1].
I've referred to the file you've suggested. I've stumbled upon variables
which seem to have been defined in [2]. These are the values I'm
/* normal RAM */
RAM0_BASE = 0x10000000,
RAM0_SIZE = 0x20000000,
UART_1_IRQ = 58,
UART_1_MMIO_BASE = 0x02020000,
UART_1_MMIO_SIZE = 0x00004000,
/* CPU */
CORTEX_A9_PRIVATE_MEM_BASE = 0x00a00000,
CORTEX_A9_PRIVATE_MEM_SIZE = 0x00002000,
CORTEX_A9_PRIVATE_TIMER_CLK = 395037500,
CORTEX_A9_PRIVATE_TIMER_DIV = 170,
/* L2 cache controller */
PL310_MMIO_BASE = 0x00a02000,
PL310_MMIO_SIZE = 0x00001000,
It might help if you post the whole serial output of your test.
The following is the serial output of my test. I've used "log" image
MX6Q SABRESD U-Boot > ext2load mmc 3:1 0x30000000 uImage
Loading file "uImage" from mmc device 3:1 (xxd1)
593794 bytes read
MX6Q SABRESD U-Boot > bootm 0x30000000
## Booting kernel from Legacy Image at 30000000 ...
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 593730 Bytes = 579.8 kB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Starting kernel ...
Block: [0x1000,0x10001000] size=0x10000000 avail=0x10000000
max_avail=0x10000000
Block: [0x1057d000,0x20001000] size=0xfa84000 avail=0xfa84000
max_avail=0xbfe8b000
Block: [0x20174000,0x20175000] size=0x1000 avail=0x0 max_avail=0x0
Block: [0x20175000,0xe0000000] size=0xbfe8b000 avail=0xbfe8b000
max_avail=0xbfe8b000
Block: [0xf0004000,0xf0005000] size=0x1000 avail=0x0 max_avail=0xbfe8b000
Block: [0xf0007000,0xf0008000] size=0x1000 avail=0x0 max_avail=0x0
Block: [0xf0009000,0xf000a000] size=0x1000 avail=0x0 max_avail=0xffe5000
Block: [0xf000a000,0xfffef000] size=0xffe5000 avail=0xffe5000
max_avail=0xffe5000
=> mem_size=4019159040 (3832 MB) / mem_avail=4019142656 (3832 MB)
Block: [0x105bf000,0x105c0000] size=0x1000 avail=0x0 max_avail=0x0
Block: [0x105c0000,0x105c1000] size=0x1000 avail=0x0 max_avail=0x1fa3d000
Block: [0x105c1000,0x105c2000] size=0x1000 avail=0x0 max_avail=0x0
Block: [0x105c2000,0x105c3000] size=0x1000 avail=0x0 max_avail=0x1fa3d000
Block: [0x105c3000,0x30000000] size=0x1fa3d000 avail=0x1fa3d000
max_avail=0x1fa3d000
=> mem_size=530845696 (506 MB) / mem_avail=530829312 (506 MB)
Block: [0x0,0x105bf000] size=0x105bf000 avail=0x105bf000
max_avail=0xcfffffff
Block: [0x30000000,0xffffffff] size=0xcfffffff avail=0xcfffffff
max_avail=0xcfffffff
=> mem_size=3764121599 (3589 MB) / mem_avail=3764121599 (3589 MB)
=> mem_size=0 (0 MB) / mem_avail=0 (0 MB)
Block: [0x0,0x1] size=0x1 avail=0x1 max_avail=0x1
Block: [0x2,0x1d] size=0x1b avail=0x1b max_avail=0x3e2
Block: [0x1e,0x400] size=0x3e2 avail=0x3e2 max_avail=0x3e2
=> mem_size=1022 (0 MB) / mem_avail=1022 (0 MB)
ROM: [10176000,10176158) config
ROM: [10152000,10172178) init
ROM: [100d5000,101519a4) ld.lib.so <http://ld.lib.so>
ROM: [10173000,10175598) test-log
kernel initialized
Error: page fault in core thread (core): ip=0x200374f4 fault=0x4ce79f8
I've observed that all my address ranges (except phys_alloc) in the
serial output have a negative offset of 0x30000 to the output mentioned
in this: https://sourceforge.net/p/genode/mailman/message/35743536/
(which seems to be working).
However, the phys_alloc address range has a negative offset of 0x60000.
Can you give me your insights on this? Could it be a source of the
problem? If yes, how can I go about resolving it?
Cheers,
Martin
Thanks in advance,
Kranthi
[1] repos/base-hw/src/lib/base/thread_bootstrap.cc
[2] repos/base/include/spec/imx6/drivers/board_base.h
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
--
Stefan Kalkowski
Genode Labs

https://github.com/skalk · http://genode.org/
Kranthi Tej
2017-04-21 09:24:00 UTC
Permalink
Hello Stefan,
Post by Stefan Kalkowski
I just wanted to add: You cannot print a message within bootstrap after
enabling the MMU until the core component is started. Due to the fact,
that the serial log console for bootstrap is initialized using the
physical address of the UART's I/O registers, because bootstrap is first
running with disabled MMU. When the MMU is enabled there are no 1:1
mappings of the UART's I/O registers, but they are somewhere above
0xf0000000. Within the core component the serial log console is
initialized using the correct virtual memory address of the UART's I/O
registers, that is why you can print log messages again in core.
Thanks for the clarification. I have been wondering why my log messages
weren't being printed once I encounter the pagefault. This provides an
explanation to my question. I've removed all the messages before core
component has started within bootstrap. I'm stuck at the pagefault part.
(as I have mentioned in my previous email)
Post by Stefan Kalkowski
I wonder if you have made any other changes. Can you please verify to
change the values of RAM and UART in the board_base.h file only? So we
can be sure to not hunt some other artifact?
I've only made changes in the board_base.h file only. I haven't made any
other changes. However, in contrast to the earlier emails, where I have
used UART2, I discovered that we should be looking at UART1 on our board.
I've just changed UART_1_MMIO_BASE and UART_1_IRQ values to the ones
mentioned in the iMX6 reference manual for UART1 in the same file itself.

Thanks,
Kranthi
Kranthi Tej
2017-04-24 11:53:03 UTC
Permalink
Hello Martin,

Following up on my previous email, I've looked into the creation of build
directory part (since, we build a build directory for wand_quad but we are
using a SabreSD board). I have observed a hierarchy in the ".mk" files
which have been included. The Makefile in the build directory has a
reference to [1]. There is a repository included by the
address repos/base/include/spec/wand_quad. I could not find this folder,
Would it be something to worry about?

Also, I've forgotten to mention that I had changed the NR_OF_CPUS value to
1 in repos/base-hw/lib/mk/spec/imx6/*.mk files (Thanks to Stefan's mail on
another thread). I've also tried keeping the NR_OF_CPUS to be 4. But, in
that case, it seems to hang at "Starting kernel ..." itself.

As an experiment, I've also tried to replace SRC_MMIO_BASE value with
MMIO_BASE value in [2]. The result is still the same. It is stuck at page
fault.

Is the offset in the memory addresses (that I have mentioned in my previous
email) when compared to the output mentioned in
https://sourceforge.net/p/genode/mailman/message/35743536/ a source of the
problem? If it can be a problem, how do I go about resolving it.

I've been unable to move forward. Kindly help me with this. Your help will
be greatly appreciated.

Thanks in advance,
Kranthi

[1] repos/base/mk/spec/wand_quad.mk
[2] repos/base/include/spec/imx6/drivers/board_base.h
Post by Kranthi Tej
Hello Martin,
Thank you for the response.
Post by Martin Stein
Most likely it's not a problem with the write function but with the
hardware implications of this specific write. This is the point where
memory-management unit and caches are switched on for the first time
implicitely moving execution from the physical to a virtual address
space. As the Kernel has no pager, this means that the page table behind
the virtual address space must already contain all stuff that is
essential to the Kernel (and the Core main/pager functionality).
You were right about the write function. It was not the problem. I had
accidentally placed a log message before the init_log() service was started
in the repos/base-hw/src/bootstrap/init.cc file. That is why I couldn't
reach the "kernel initialized" part in Genode 17.02.
Post by Martin Stein
I would lookup the pagefault IP denoted in the pagefault message first
using 'genode-arm-objdump -DCl <BUILD_DIR>/var/run/<RUN_NAME>.core'.
I've taken the objdump of the file as you have suggested. The pagefault
occurs at ip=0x200374f4. I've checked the corresponding line in the objdump
output. It seems to correspond to a part of the prepare_init_main_thread
/home/kranthitej/Desktop/BTP/BTP_Latest/genode-master/
repos/base/include/base/native_capability.h:93
200374f4: e7975003 ldr r5, [r7, r3]
https://drive.google.com/open?id=0B0jItjAniGQxR2FmWURsT1BZS0U (for
reference)
Post by Martin Stein
This should give you a hint what is missing in your page table. The MMIO
regions to be included in the early page table are defined in [1].
I've referred to the file you've suggested. I've stumbled upon variables
which seem to have been defined in [2]. These are the values I'm currently
/* normal RAM */
RAM0_BASE = 0x10000000,
RAM0_SIZE = 0x20000000,
UART_1_IRQ = 58,
UART_1_MMIO_BASE = 0x02020000,
UART_1_MMIO_SIZE = 0x00004000,
/* CPU */
CORTEX_A9_PRIVATE_MEM_BASE = 0x00a00000,
CORTEX_A9_PRIVATE_MEM_SIZE = 0x00002000,
CORTEX_A9_PRIVATE_TIMER_CLK = 395037500,
CORTEX_A9_PRIVATE_TIMER_DIV = 170,
/* L2 cache controller */
PL310_MMIO_BASE = 0x00a02000,
PL310_MMIO_SIZE = 0x00001000,
Post by Martin Stein
It might help if you post the whole serial output of your test.
The following is the serial output of my test. I've used "log" image
MX6Q SABRESD U-Boot > ext2load mmc 3:1 0x30000000 uImage
Loading file "uImage" from mmc device 3:1 (xxd1)
593794 bytes read
MX6Q SABRESD U-Boot > bootm 0x30000000
## Booting kernel from Legacy Image at 30000000 ...
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 593730 Bytes = 579.8 kB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Starting kernel ...
Block: [0x1000,0x10001000] size=0x10000000 avail=0x10000000
max_avail=0x10000000
Block: [0x1057d000,0x20001000] size=0xfa84000 avail=0xfa84000
max_avail=0xbfe8b000
Block: [0x20174000,0x20175000] size=0x1000 avail=0x0 max_avail=0x0
Block: [0x20175000,0xe0000000] size=0xbfe8b000 avail=0xbfe8b000
max_avail=0xbfe8b000
Block: [0xf0004000,0xf0005000] size=0x1000 avail=0x0 max_avail=0xbfe8b000
Block: [0xf0007000,0xf0008000] size=0x1000 avail=0x0 max_avail=0x0
Block: [0xf0009000,0xf000a000] size=0x1000 avail=0x0 max_avail=0xffe5000
Block: [0xf000a000,0xfffef000] size=0xffe5000 avail=0xffe5000
max_avail=0xffe5000
=> mem_size=4019159040 (3832 MB) / mem_avail=4019142656 (3832 MB)
Block: [0x105bf000,0x105c0000] size=0x1000 avail=0x0 max_avail=0x0
Block: [0x105c0000,0x105c1000] size=0x1000 avail=0x0 max_avail=0x1fa3d000
Block: [0x105c1000,0x105c2000] size=0x1000 avail=0x0 max_avail=0x0
Block: [0x105c2000,0x105c3000] size=0x1000 avail=0x0 max_avail=0x1fa3d000
Block: [0x105c3000,0x30000000] size=0x1fa3d000 avail=0x1fa3d000
max_avail=0x1fa3d000
=> mem_size=530845696 (506 MB) / mem_avail=530829312 (506 MB)
Block: [0x0,0x105bf000] size=0x105bf000 avail=0x105bf000
max_avail=0xcfffffff
Block: [0x30000000,0xffffffff] size=0xcfffffff avail=0xcfffffff
max_avail=0xcfffffff
=> mem_size=3764121599 (3589 MB) / mem_avail=3764121599 (3589 MB)
=> mem_size=0 (0 MB) / mem_avail=0 (0 MB)
Block: [0x0,0x1] size=0x1 avail=0x1 max_avail=0x1
Block: [0x2,0x1d] size=0x1b avail=0x1b max_avail=0x3e2
Block: [0x1e,0x400] size=0x3e2 avail=0x3e2 max_avail=0x3e2
=> mem_size=1022 (0 MB) / mem_avail=1022 (0 MB)
ROM: [10176000,10176158) config
ROM: [10152000,10172178) init
ROM: [100d5000,101519a4) ld.lib.so
ROM: [10173000,10175598) test-log
kernel initialized
Error: page fault in core thread (core): ip=0x200374f4 fault=0x4ce79f8
I've observed that all my address ranges (except phys_alloc) in the serial
https://sourceforge.net/p/genode/mailman/message/35743536/ (which seems
to be working).
However, the phys_alloc address range has a negative offset of 0x60000.
Can you give me your insights on this? Could it be a source of the problem?
If yes, how can I go about resolving it?
Post by Martin Stein
Cheers,
Martin
Thanks in advance,
Kranthi
[1] repos/base-hw/src/lib/base/thread_bootstrap.cc
[2] repos/base/include/spec/imx6/drivers/board_base.h
Kranthi Tej
2017-05-01 11:33:33 UTC
Permalink
Hello Martin & Stefan,

We've been working on this issue. The pagefault occurs at ip = 0x200374f4.
I've referred to the objdump output corresponding to this ip. The following
is the corresponding line:

_ZN6Genode17Native_capabilityaSERKS0_():
/home/kranthitej/Desktop/BTP/BTP_Latest/genode-master/
repos/base/include/base/native_capability.h:93
200374f4: e7975003 ldr r5, [r7, r3]

When we looked into the LDR documentation in the ARM Infocenter, we've
discovered that the possible way of getting an error with the LDR command
is when the literal pool is not within the range of the LDR instruction.
The solution to this problem is given to be adding "LTORG" directive in the
assembly code before the problematic instruction.

However, in our case, the assembly file is being generated by higher level
code. We are not able to comprehend as to how we can add a literal pool in
the image being generated. Can you give us any pointers on what
modifications could be made and where?

Thanks in advance,
Kranthi
Post by Kranthi Tej
Hello Martin,
Thank you for the response.
Post by Martin Stein
Most likely it's not a problem with the write function but with the
hardware implications of this specific write. This is the point where
memory-management unit and caches are switched on for the first time
implicitely moving execution from the physical to a virtual address
space. As the Kernel has no pager, this means that the page table behind
the virtual address space must already contain all stuff that is
essential to the Kernel (and the Core main/pager functionality).
You were right about the write function. It was not the problem. I had
accidentally placed a log message before the init_log() service was started
in the repos/base-hw/src/bootstrap/init.cc file. That is why I couldn't
reach the "kernel initialized" part in Genode 17.02.
Post by Martin Stein
I would lookup the pagefault IP denoted in the pagefault message first
using 'genode-arm-objdump -DCl <BUILD_DIR>/var/run/<RUN_NAME>.core'.
I've taken the objdump of the file as you have suggested. The pagefault
occurs at ip=0x200374f4. I've checked the corresponding line in the objdump
output. It seems to correspond to a part of the prepare_init_main_thread
/home/kranthitej/Desktop/BTP/BTP_Latest/genode-master/
repos/base/include/base/native_capability.h:93
200374f4: e7975003 ldr r5, [r7, r3]
https://drive.google.com/open?id=0B0jItjAniGQxR2FmWURsT1BZS0U (for
reference)
Post by Martin Stein
This should give you a hint what is missing in your page table. The MMIO
regions to be included in the early page table are defined in [1].
I've referred to the file you've suggested. I've stumbled upon variables
which seem to have been defined in [2]. These are the values I'm currently
/* normal RAM */
RAM0_BASE = 0x10000000,
RAM0_SIZE = 0x20000000,
UART_1_IRQ = 58,
UART_1_MMIO_BASE = 0x02020000,
UART_1_MMIO_SIZE = 0x00004000,
/* CPU */
CORTEX_A9_PRIVATE_MEM_BASE = 0x00a00000,
CORTEX_A9_PRIVATE_MEM_SIZE = 0x00002000,
CORTEX_A9_PRIVATE_TIMER_CLK = 395037500,
CORTEX_A9_PRIVATE_TIMER_DIV = 170,
/* L2 cache controller */
PL310_MMIO_BASE = 0x00a02000,
PL310_MMIO_SIZE = 0x00001000,
Post by Martin Stein
It might help if you post the whole serial output of your test.
The following is the serial output of my test. I've used "log" image
MX6Q SABRESD U-Boot > ext2load mmc 3:1 0x30000000 uImage
Loading file "uImage" from mmc device 3:1 (xxd1)
593794 bytes read
MX6Q SABRESD U-Boot > bootm 0x30000000
## Booting kernel from Legacy Image at 30000000 ...
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 593730 Bytes = 579.8 kB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Starting kernel ...
Block: [0x1000,0x10001000] size=0x10000000 avail=0x10000000
max_avail=0x10000000
Block: [0x1057d000,0x20001000] size=0xfa84000 avail=0xfa84000
max_avail=0xbfe8b000
Block: [0x20174000,0x20175000] size=0x1000 avail=0x0 max_avail=0x0
Block: [0x20175000,0xe0000000] size=0xbfe8b000 avail=0xbfe8b000
max_avail=0xbfe8b000
Block: [0xf0004000,0xf0005000] size=0x1000 avail=0x0 max_avail=0xbfe8b000
Block: [0xf0007000,0xf0008000] size=0x1000 avail=0x0 max_avail=0x0
Block: [0xf0009000,0xf000a000] size=0x1000 avail=0x0 max_avail=0xffe5000
Block: [0xf000a000,0xfffef000] size=0xffe5000 avail=0xffe5000
max_avail=0xffe5000
=> mem_size=4019159040 (3832 MB) / mem_avail=4019142656 (3832 MB)
Block: [0x105bf000,0x105c0000] size=0x1000 avail=0x0 max_avail=0x0
Block: [0x105c0000,0x105c1000] size=0x1000 avail=0x0 max_avail=0x1fa3d000
Block: [0x105c1000,0x105c2000] size=0x1000 avail=0x0 max_avail=0x0
Block: [0x105c2000,0x105c3000] size=0x1000 avail=0x0 max_avail=0x1fa3d000
Block: [0x105c3000,0x30000000] size=0x1fa3d000 avail=0x1fa3d000
max_avail=0x1fa3d000
=> mem_size=530845696 (506 MB) / mem_avail=530829312 (506 MB)
Block: [0x0,0x105bf000] size=0x105bf000 avail=0x105bf000
max_avail=0xcfffffff
Block: [0x30000000,0xffffffff] size=0xcfffffff avail=0xcfffffff
max_avail=0xcfffffff
=> mem_size=3764121599 (3589 MB) / mem_avail=3764121599 (3589 MB)
=> mem_size=0 (0 MB) / mem_avail=0 (0 MB)
Block: [0x0,0x1] size=0x1 avail=0x1 max_avail=0x1
Block: [0x2,0x1d] size=0x1b avail=0x1b max_avail=0x3e2
Block: [0x1e,0x400] size=0x3e2 avail=0x3e2 max_avail=0x3e2
=> mem_size=1022 (0 MB) / mem_avail=1022 (0 MB)
ROM: [10176000,10176158) config
ROM: [10152000,10172178) init
ROM: [100d5000,101519a4) ld.lib.so
ROM: [10173000,10175598) test-log
kernel initialized
Error: page fault in core thread (core): ip=0x200374f4 fault=0x4ce79f8
I've observed that all my address ranges (except phys_alloc) in the serial
https://sourceforge.net/p/genode/mailman/message/35743536/ (which seems
to be working).
However, the phys_alloc address range has a negative offset of 0x60000.
Can you give me your insights on this? Could it be a source of the problem?
If yes, how can I go about resolving it?
Post by Martin Stein
Cheers,
Martin
Thanks in advance,
Kranthi
[1] repos/base-hw/src/lib/base/thread_bootstrap.cc
[2] repos/base/include/spec/imx6/drivers/board_base.h
Stefan Kalkowski
2017-05-02 07:04:00 UTC
Permalink
Hi Kranthi,
Post by Kranthi Tej
Hello Martin & Stefan,
We've been working on this issue. The pagefault occurs at ip =
0x200374f4. I've referred to the objdump output corresponding to this
/home/kranthitej/Desktop/BTP/BTP_Latest/genode-master/repos/base/include/base/native_capability.h:93
200374f4:e7975003 ldrr5, [r7, r3]
When we looked into the LDR documentation in the ARM Infocenter, we've
discovered that the possible way of getting an error with the LDR
command is when the literal pool is not within the range of the LDR
instruction. The solution to this problem is given to be adding "LTORG"
directive in the assembly code before the problematic instruction.
However, in our case, the assembly file is being generated by higher
level code. We are not able to comprehend as to how we can add a literal
pool in the image being generated. Can you give us any pointers on what
modifications could be made and where?
I'm sure it has nothing to do with the load instruction and its usage,
but for instance with missing physical backing store, e.g., by wrong RAM
specifications, that is going to be loaded.

I have taken our i.MX6Q SABRE SD out of the cabinet and tested it by
building `run/log` and `run/affinity` for the Wandboard with the minor
patch below [1].
Both run-scripts worked without further modifications beside the lesser
RAM specification on top of Genode's master and staging branches.

I do not know what code-base you are using, but please try the patch
below on top of Genode's current master branch to build the "log" image,
and verify whether this works for you.

Best regards
Stefan

[1] Patch:

diff --git a/repos/base/include/spec/imx6/drivers/board_base.h
b/repos/base/include/spec/imx6/drivers/board_base.h
index 2d161f4..3600d6d 100644
--- a/repos/base/include/spec/imx6/drivers/board_base.h
+++ b/repos/base/include/spec/imx6/drivers/board_base.h
@@ -30,7 +30,7 @@ struct Genode::Board_base
enum {
/* normal RAM */
RAM0_BASE = 0x10000000,
- RAM0_SIZE = 0x80000000,
+ RAM0_SIZE = 0x40000000,

/* device IO memory */
MMIO_BASE = 0x00000000,
Post by Kranthi Tej
Thanks in advance,
Kranthi
Hello Martin,
Thank you for the response.
Most likely it's not a problem with the write function but with the
hardware implications of this specific write. This is the point where
memory-management unit and caches are switched on for the first time
implicitely moving execution from the physical to a virtual address
space. As the Kernel has no pager, this means that the page table behind
the virtual address space must already contain all stuff that is
essential to the Kernel (and the Core main/pager functionality).
You were right about the write function. It was not the problem. I
had accidentally placed a log message before the init_log() service
was started in the repos/base-hw/src/bootstrap/init.cc file. That is
why I couldn't reach the "kernel initialized" part in Genode 17.02.
I would lookup the pagefault IP denoted in the pagefault message first
using 'genode-arm-objdump -DCl <BUILD_DIR>/var/run/<RUN_NAME>.core'.
I've taken the objdump of the file as you have suggested. The
pagefault occurs at ip=0x200374f4. I've checked the corresponding
line in the objdump output. It seems to correspond to a part of the
/home/kranthitej/Desktop/BTP/BTP_Latest/genode-master/repos/base/include/base/native_capability.h:93
200374f4:e7975003 ldrr5, [r7, r3]
https://drive.google.com/open?id=0B0jItjAniGQxR2FmWURsT1BZS0U
<https://drive.google.com/open?id=0B0jItjAniGQxR2FmWURsT1BZS0U> (for
reference)
This should give you a hint what is missing in your page table. The MMIO
regions to be included in the early page table are defined in [1].
I've referred to the file you've suggested. I've stumbled upon
variables which seem to have been defined in [2]. These are the
/* normal RAM */
RAM0_BASE = 0x10000000,
RAM0_SIZE = 0x20000000,
UART_1_IRQ = 58,
UART_1_MMIO_BASE = 0x02020000,
UART_1_MMIO_SIZE = 0x00004000,
/* CPU */
CORTEX_A9_PRIVATE_MEM_BASE = 0x00a00000,
CORTEX_A9_PRIVATE_MEM_SIZE = 0x00002000,
CORTEX_A9_PRIVATE_TIMER_CLK = 395037500,
CORTEX_A9_PRIVATE_TIMER_DIV = 170,
/* L2 cache controller */
PL310_MMIO_BASE = 0x00a02000,
PL310_MMIO_SIZE = 0x00001000,
It might help if you post the whole serial output of your test.
The following is the serial output of my test. I've used "log" image
MX6Q SABRESD U-Boot > ext2load mmc 3:1 0x30000000 uImage
Loading file "uImage" from mmc device 3:1 (xxd1)
593794 bytes read
MX6Q SABRESD U-Boot > bootm 0x30000000
## Booting kernel from Legacy Image at 30000000 ...
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 593730 Bytes = 579.8 kB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Starting kernel ...
Block: [0x1000,0x10001000] size=0x10000000 avail=0x10000000
max_avail=0x10000000
Block: [0x1057d000,0x20001000] size=0xfa84000 avail=0xfa84000
max_avail=0xbfe8b000
Block: [0x20174000,0x20175000] size=0x1000 avail=0x0 max_avail=0x0
Block: [0x20175000,0xe0000000] size=0xbfe8b000 avail=0xbfe8b000
max_avail=0xbfe8b000
Block: [0xf0004000,0xf0005000] size=0x1000 avail=0x0
max_avail=0xbfe8b000
Block: [0xf0007000,0xf0008000] size=0x1000 avail=0x0 max_avail=0x0
Block: [0xf0009000,0xf000a000] size=0x1000 avail=0x0
max_avail=0xffe5000
Block: [0xf000a000,0xfffef000] size=0xffe5000 avail=0xffe5000
max_avail=0xffe5000
=> mem_size=4019159040 (3832 MB) / mem_avail=4019142656 (3832 MB)
Block: [0x105bf000,0x105c0000] size=0x1000 avail=0x0 max_avail=0x0
Block: [0x105c0000,0x105c1000] size=0x1000 avail=0x0
max_avail=0x1fa3d000
Block: [0x105c1000,0x105c2000] size=0x1000 avail=0x0 max_avail=0x0
Block: [0x105c2000,0x105c3000] size=0x1000 avail=0x0
max_avail=0x1fa3d000
Block: [0x105c3000,0x30000000] size=0x1fa3d000 avail=0x1fa3d000
max_avail=0x1fa3d000
=> mem_size=530845696 (506 MB) / mem_avail=530829312 (506 MB)
Block: [0x0,0x105bf000] size=0x105bf000 avail=0x105bf000
max_avail=0xcfffffff
Block: [0x30000000,0xffffffff] size=0xcfffffff avail=0xcfffffff
max_avail=0xcfffffff
=> mem_size=3764121599 (3589 MB) / mem_avail=3764121599 (3589 MB)
=> mem_size=0 (0 MB) / mem_avail=0 (0 MB)
Block: [0x0,0x1] size=0x1 avail=0x1 max_avail=0x1
Block: [0x2,0x1d] size=0x1b avail=0x1b max_avail=0x3e2
Block: [0x1e,0x400] size=0x3e2 avail=0x3e2 max_avail=0x3e2
=> mem_size=1022 (0 MB) / mem_avail=1022 (0 MB)
ROM: [10176000,10176158) config
ROM: [10152000,10172178) init
ROM: [100d5000,101519a4) ld.lib.so <http://ld.lib.so>
ROM: [10173000,10175598) test-log
kernel initialized
Error: page fault in core thread (core): ip=0x200374f4 fault=0x4ce79f8
I've observed that all my address ranges (except phys_alloc) in the
serial output have a negative offset of 0x30000 to the output
mentioned in
this: https://sourceforge.net/p/genode/mailman/message/35743536/
<https://sourceforge.net/p/genode/mailman/message/35743536/> (which
seems to be working).
However, the phys_alloc address range has a negative offset of
0x60000. Can you give me your insights on this? Could it be a source
of the problem? If yes, how can I go about resolving it?
Cheers,
Martin
Thanks in advance,
Kranthi
[1] repos/base-hw/src/lib/base/thread_bootstrap.cc
[2] repos/base/include/spec/imx6/drivers/board_base.h
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
--
Stefan Kalkowski
Genode Labs

https://github.com/skalk · http://genode.org/
Kranthi Tej
2017-05-02 07:43:38 UTC
Permalink
Hello Stefan,

Thank you for the quick response.
Post by Stefan Kalkowski
I'm sure it has nothing to do with the load instruction and its usage,
but for instance with missing physical backing store, e.g., by wrong RAM
specifications, that is going to be loaded.
I have taken our i.MX6Q SABRE SD out of the cabinet and tested it by
building `run/log` and `run/affinity` for the Wandboard with the minor
patch below [1].
Both run-scripts worked without further modifications beside the lesser
RAM specification on top of Genode's master and staging branches.
We have been using the `run/log` and `run/demo` images.

I do not know what code-base you are using, but please try the patch
Post by Stefan Kalkowski
below on top of Genode's current master branch to build the "log" image,
and verify whether this works for you.
I'm currently using the Genode 17.02 master branch as my code-base. I've
taken it from https://github.com/genodelabs/genode.
Post by Stefan Kalkowski
diff --git a/repos/base/include/spec/imx6/drivers/board_base.h
b/repos/base/include/spec/imx6/drivers/board_base.h
index 2d161f4..3600d6d 100644
--- a/repos/base/include/spec/imx6/drivers/board_base.h
+++ b/repos/base/include/spec/imx6/drivers/board_base.h
@@ -30,7 +30,7 @@ struct Genode::Board_base
enum {
/* normal RAM */
RAM0_BASE = 0x10000000,
- RAM0_SIZE = 0x80000000,
+ RAM0_SIZE = 0x40000000,
/* device IO memory */
MMIO_BASE = 0x00000000,
We've already made this change. We are currently using this setting itself.
Besides, making this change, we've changed the NR_OF_CPUS to 1 in [1]. If
we let the default value of 4 be set, the device hangs at "Starting kernel
..." stage itself. We also tried setting the RAM0_SIZE to 0x20000000. Our
board has a physical RAM of 1 GB.

We have been facing the same pagefault for both the images (demo and log).
The core isn't being started. Please provide any pointers to resolve this
problem.

Thanks in advance,
Kranthi

[1] repos/base-hw/lib/mk/spec/imx6/*.mk
Stefan Kalkowski
2017-05-02 08:27:02 UTC
Permalink
Hi Kranthi,
Post by Kranthi Tej
We've already made this change. We are currently using this setting
itself. Besides, making this change, we've changed the NR_OF_CPUS to 1
in [1]. If we let the default value of 4 be set, the device hangs at
"Starting kernel ..." stage itself. We also tried setting the RAM0_SIZE
to 0x20000000. Our board has a physical RAM of 1 GB.
We have been facing the same pagefault for both the images (demo and
log). The core isn't being started. Please provide any pointers to
resolve this problem.
Please, do not test the release version 17.02, but the _current_ master
branch, e.g., by cloning the git repository:

***@github.com:genodelabs/genode.git

just to ensure whether this works for you. I've used this version
successfully with all 4 cores enabled on the same board.

Regards Stefan
--
Stefan Kalkowski
Genode Labs

https://github.com/skalk · http://genode.org/
Kranthi Tej
2017-05-02 09:54:30 UTC
Permalink
Hello Stefan,

I've cloned the genode repository freshly as you have suggested. I've
followed the following steps for building the uImage:

- Created a build directory by using /tool/create_builddir wand_quad
- Included "RUN_OPT += --include image/uboot in [1]
- Changed RAM0_SIZE = 0x80000000 to RAM0_SIZE = 0x40000000
- Run "make run/log" from the build directory [2]

When I haven't changed NR_OF_CPUS, it is hanging at "Starting kernel ..."
itself. When I've changed NR_OF_CPUS to 1, I'm getting the following output:

MX6Q SABRESD U-Boot > bootm 0x30000000
## Booting kernel from Legacy Image at 30000000 ...
Image Name:
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 608176 Bytes = 593.9 kB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK

Starting kernel ...

:virt_alloc: Allocator 0x200c40b8 dump:
Block: [00001000,10001000) size=256M avail=256M max_avail=256M
Block: [10585000,20001000) size=256496K avail=256496K max_avail=3144208K
Block: [2017b000,2017c000) size=4K avail=0 max_avail=0
Block: [2017c000,e0000000) size=3144208K avail=3144208K max_avail=3144208K
Block: [f0004000,f0005000) size=4K avail=0 max_avail=3144208K
Block: [f0007000,f0008000) size=4K avail=0 max_avail=0
Block: [f0009000,f000a000) size=4K avail=0 max_avail=262036K
Block: [f000a000,fffef000) size=262036K avail=262036K max_avail=262036K
=> mem_size=4019097600 (3832 MB) / mem_avail=4019081216 (3832 MB)

:phys_alloc: Allocator 0x200c304c dump:
Block: [10585000,10586000) size=4K avail=0 max_avail=0
Block: [10586000,10587000) size=4K avail=0 max_avail=1042644K
Block: [10587000,10588000) size=4K avail=0 max_avail=0
Block: [105ca000,105cb000) size=4K avail=0 max_avail=1042644K
Block: [105cb000,50000000) size=1042644K avail=1042644K max_avail=1042644K
=> mem_size=1067683840 (1018 MB) / mem_avail=1067667456 (1018 MB)

:io_mem_alloc: Allocator 0x200c5130 dump:
Block: [00000000,10585000) size=267796K avail=267796K max_avail=267796K
Block: [10588000,105ca000) size=264K avail=264K max_avail=2952790015
Block: [50000000,ffffffff) size=2952790015 avail=2952790015
max_avail=2952790015
=> mem_size=3227283455 (3077 MB) / mem_avail=3227283455 (3077 MB)

:io_port_alloc: Allocator 0x200c619c dump:
=> mem_size=0 (0 MB) / mem_avail=0 (0 MB)

:irq_alloc: Allocator 0x200c7208 dump:
Block: [00000000,00000001) size=1 avail=1 max_avail=1
Block: [00000002,0000001d) size=27 avail=27 max_avail=994
Block: [0000001e,00000400) size=994 avail=994 max_avail=994
=> mem_size=1022 (0 MB) / mem_avail=1022 (0 MB)

:rom_fs: ROM modules:
ROM: [1017e000,1017e158) config
ROM: [10154000,1017a900) init
ROM: [100d6000,10153b64) ld.lib.so
ROM: [1017b000,1017d598) test-log


kernel initialized
Error: page fault in core thread (core): ip=0x20037b34 fault=0x68c88038

We are unable to detect what the problem is. Am I missing something in the
build process itself?

Thanks,
Kranthi

[1] build/wand_quad/etc/build.conf
[2] /build/wand_quad

On Tue, May 2, 2017 at 1:57 PM, Stefan Kalkowski <
Post by Stefan Kalkowski
Hi Kranthi,
Post by Kranthi Tej
We've already made this change. We are currently using this setting
itself. Besides, making this change, we've changed the NR_OF_CPUS to 1
in [1]. If we let the default value of 4 be set, the device hangs at
"Starting kernel ..." stage itself. We also tried setting the RAM0_SIZE
to 0x20000000. Our board has a physical RAM of 1 GB.
We have been facing the same pagefault for both the images (demo and
log). The core isn't being started. Please provide any pointers to
resolve this problem.
Please, do not test the release version 17.02, but the _current_ master
just to ensure whether this works for you. I've used this version
successfully with all 4 cores enabled on the same board.
Regards Stefan
--
Stefan Kalkowski
Genode Labs
https://github.com/skalk · http://genode.org/
------------------------------------------------------------
------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
Stefan Kalkowski
2017-05-02 10:30:02 UTC
Permalink
Hi Kranthi,

can you send me your resulting uImage (var/run/log/uImage) after a fresh
built without NR_OF_CPUS changes to me personally so that I can test it
on our board using my boot procedure?

Regards
Stefan
Post by Kranthi Tej
Hello Stefan,
I've cloned the genode repository freshly as you have suggested. I've
* Created a build directory by using /tool/create_builddir wand_quad
* Included "RUN_OPT += --include image/uboot in [1]
* Changed RAM0_SIZE = 0x80000000 to RAM0_SIZE = 0x40000000
* Run "make run/log" from the build directory [2]
When I haven't changed NR_OF_CPUS, it is hanging at "Starting kernel
..." itself. When I've changed NR_OF_CPUS to 1, I'm getting the
MX6Q SABRESD U-Boot > bootm 0x30000000
## Booting kernel from Legacy Image at 30000000 ...
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 608176 Bytes = 593.9 kB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Starting kernel ...
Block: [00001000,10001000) size=256M avail=256M max_avail=256M
Block: [10585000,20001000) size=256496K avail=256496K max_avail=3144208K
Block: [2017b000,2017c000) size=4K avail=0 max_avail=0
Block: [2017c000,e0000000) size=3144208K avail=3144208K max_avail=3144208K
Block: [f0004000,f0005000) size=4K avail=0 max_avail=3144208K
Block: [f0007000,f0008000) size=4K avail=0 max_avail=0
Block: [f0009000,f000a000) size=4K avail=0 max_avail=262036K
Block: [f000a000,fffef000) size=262036K avail=262036K max_avail=262036K
=> mem_size=4019097600 (3832 MB) / mem_avail=4019081216 (3832 MB)
Block: [10585000,10586000) size=4K avail=0 max_avail=0
Block: [10586000,10587000) size=4K avail=0 max_avail=1042644K
Block: [10587000,10588000) size=4K avail=0 max_avail=0
Block: [105ca000,105cb000) size=4K avail=0 max_avail=1042644K
Block: [105cb000,50000000) size=1042644K avail=1042644K max_avail=1042644K
=> mem_size=1067683840 (1018 MB) / mem_avail=1067667456 (1018 MB)
Block: [00000000,10585000) size=267796K avail=267796K max_avail=267796K
Block: [10588000,105ca000) size=264K avail=264K max_avail=2952790015
Block: [50000000,ffffffff) size=2952790015 avail=2952790015
max_avail=2952790015
=> mem_size=3227283455 (3077 MB) / mem_avail=3227283455 (3077 MB)
=> mem_size=0 (0 MB) / mem_avail=0 (0 MB)
Block: [00000000,00000001) size=1 avail=1 max_avail=1
Block: [00000002,0000001d) size=27 avail=27 max_avail=994
Block: [0000001e,00000400) size=994 avail=994 max_avail=994
=> mem_size=1022 (0 MB) / mem_avail=1022 (0 MB)
ROM: [1017e000,1017e158) config
ROM: [10154000,1017a900) init
ROM: [100d6000,10153b64) ld.lib.so <http://ld.lib.so>
ROM: [1017b000,1017d598) test-log
kernel initialized
Error: page fault in core thread (core): ip=0x20037b34 fault=0x68c88038
We are unable to detect what the problem is. Am I missing something in
the build process itself?
Thanks,
Kranthi
[1] build/wand_quad/etc/build.conf
[2] /build/wand_quad
On Tue, May 2, 2017 at 1:57 PM, Stefan Kalkowski
Hi Kranthi,
Post by Kranthi Tej
We've already made this change. We are currently using this setting
itself. Besides, making this change, we've changed the NR_OF_CPUS to 1
in [1]. If we let the default value of 4 be set, the device hangs at
"Starting kernel ..." stage itself. We also tried setting the RAM0_SIZE
to 0x20000000. Our board has a physical RAM of 1 GB.
We have been facing the same pagefault for both the images (demo and
log). The core isn't being started. Please provide any pointers to
resolve this problem.
Please, do not test the release version 17.02, but the _current_ master
just to ensure whether this works for you. I've used this version
successfully with all 4 cores enabled on the same board.
Regards Stefan
--
Stefan Kalkowski
Genode Labs
https://github.com/skalk · http://genode.org/
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
<https://lists.sourceforge.net/lists/listinfo/genode-main>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
--
Stefan Kalkowski
Genode Labs

https://github.com/skalk · http://genode.org/
Kranthi Tej
2017-05-02 10:41:12 UTC
Permalink
Hello Stefan,

I've made the changes you've asked me to do and built a fresh uImage. I've
shared the link to the uImage to your personal id (
***@genode-labs.com) with the subject "Genode on i.MX6 uImage".

Thanks,
Kranthi

On Tue, May 2, 2017 at 4:00 PM, Stefan Kalkowski <
Post by Stefan Kalkowski
Hi Kranthi,
can you send me your resulting uImage (var/run/log/uImage) after a fresh
built without NR_OF_CPUS changes to me personally so that I can test it
on our board using my boot procedure?
Regards
Stefan
Post by Kranthi Tej
Hello Stefan,
I've cloned the genode repository freshly as you have suggested. I've
* Created a build directory by using /tool/create_builddir wand_quad
* Included "RUN_OPT += --include image/uboot in [1]
* Changed RAM0_SIZE = 0x80000000 to RAM0_SIZE = 0x40000000
* Run "make run/log" from the build directory [2]
When I haven't changed NR_OF_CPUS, it is hanging at "Starting kernel
..." itself. When I've changed NR_OF_CPUS to 1, I'm getting the
MX6Q SABRESD U-Boot > bootm 0x30000000
## Booting kernel from Legacy Image at 30000000 ...
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 608176 Bytes = 593.9 kB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Starting kernel ...
Block: [00001000,10001000) size=256M avail=256M max_avail=256M
Block: [10585000,20001000) size=256496K avail=256496K max_avail=3144208K
Block: [2017b000,2017c000) size=4K avail=0 max_avail=0
Block: [2017c000,e0000000) size=3144208K avail=3144208K
max_avail=3144208K
Post by Kranthi Tej
Block: [f0004000,f0005000) size=4K avail=0 max_avail=3144208K
Block: [f0007000,f0008000) size=4K avail=0 max_avail=0
Block: [f0009000,f000a000) size=4K avail=0 max_avail=262036K
Block: [f000a000,fffef000) size=262036K avail=262036K max_avail=262036K
=> mem_size=4019097600 (3832 MB) / mem_avail=4019081216 (3832 MB)
Block: [10585000,10586000) size=4K avail=0 max_avail=0
Block: [10586000,10587000) size=4K avail=0 max_avail=1042644K
Block: [10587000,10588000) size=4K avail=0 max_avail=0
Block: [105ca000,105cb000) size=4K avail=0 max_avail=1042644K
Block: [105cb000,50000000) size=1042644K avail=1042644K
max_avail=1042644K
Post by Kranthi Tej
=> mem_size=1067683840 (1018 MB) / mem_avail=1067667456 (1018 MB)
Block: [00000000,10585000) size=267796K avail=267796K max_avail=267796K
Block: [10588000,105ca000) size=264K avail=264K max_avail=2952790015
Block: [50000000,ffffffff) size=2952790015 avail=2952790015
max_avail=2952790015
=> mem_size=3227283455 (3077 MB) / mem_avail=3227283455 (3077 MB)
=> mem_size=0 (0 MB) / mem_avail=0 (0 MB)
Block: [00000000,00000001) size=1 avail=1 max_avail=1
Block: [00000002,0000001d) size=27 avail=27 max_avail=994
Block: [0000001e,00000400) size=994 avail=994 max_avail=994
=> mem_size=1022 (0 MB) / mem_avail=1022 (0 MB)
ROM: [1017e000,1017e158) config
ROM: [10154000,1017a900) init
ROM: [100d6000,10153b64) ld.lib.so <http://ld.lib.so>
ROM: [1017b000,1017d598) test-log
kernel initialized
Error: page fault in core thread (core): ip=0x20037b34 fault=0x68c88038
We are unable to detect what the problem is. Am I missing something in
the build process itself?
Thanks,
Kranthi
[1] build/wand_quad/etc/build.conf
[2] /build/wand_quad
On Tue, May 2, 2017 at 1:57 PM, Stefan Kalkowski
Hi Kranthi,
Post by Kranthi Tej
We've already made this change. We are currently using this setting
itself. Besides, making this change, we've changed the NR_OF_CPUS
to 1
Post by Kranthi Tej
Post by Kranthi Tej
in [1]. If we let the default value of 4 be set, the device hangs
at
Post by Kranthi Tej
Post by Kranthi Tej
"Starting kernel ..." stage itself. We also tried setting the
RAM0_SIZE
Post by Kranthi Tej
Post by Kranthi Tej
to 0x20000000. Our board has a physical RAM of 1 GB.
We have been facing the same pagefault for both the images (demo
and
Post by Kranthi Tej
Post by Kranthi Tej
log). The core isn't being started. Please provide any pointers to
resolve this problem.
Please, do not test the release version 17.02, but the _current_
master
Post by Kranthi Tej
just to ensure whether this works for you. I've used this version
successfully with all 4 cores enabled on the same board.
Regards Stefan
--
Stefan Kalkowski
Genode Labs
https://github.com/skalk · http://genode.org/
------------------------------------------------------------
------------------
Post by Kranthi Tej
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
<https://lists.sourceforge.net/lists/listinfo/genode-main>
------------------------------------------------------------
------------------
Post by Kranthi Tej
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
--
Stefan Kalkowski
Genode Labs
https://github.com/skalk · http://genode.org/
------------------------------------------------------------
------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
Stefan Kalkowski
2017-05-02 10:50:40 UTC
Permalink
Hi Kranthi,

I could boot the uImage you provided to me successfully, see below.
Either we have slightly different variants of the same board, or the
boot-loader does something fundamentally different, or you have some
problem when loading the uImage correctly, so that the image gets corrupted.

Sorry, at the moment I do not have another idea, because I cannot
reproduce your problem.

Regards
Stefan

--

U-Boot 2009.08 (Apr 29 2013 - 18:01:51)

CPU: Freescale i.MX6 family TO1.2 at 792 MHz
Thermal sensor with ratio = 188
Temperature: 20 C, calibration data 0x5a35087d
mx6q pll1: 792MHz
mx6q pll2: 528MHz
mx6q pll3: 480MHz
mx6q pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 264000000Hz
emi_slow clock: 132000000Hz
ddr clock : 528000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
nfc clock : 24000000Hz
Board: i.MX6Q-SABRESD: unknown-board Board: 0x63012 [POR ]
Boot Device: SD
I2C: ready
DRAM: 1 GB
MMC: FSL_USDHC: 0,FSL_USDHC: 1,FSL_USDHC: 2,FSL_USDHC: 3
In: serial
Out: serial
Err: serial
Found PFUZE100! deviceid=10,revid=11
Net: got MAC address from IIM: 00:04:9f:02:e2:bb
FEC0 [PRIME]
Hit any key to stop autoboot: 0
PHY indentify @ 0x1 = 0x004dd074
FEC: Link is Up 796d
BOOTP broadcast 1
DHCP client bound to address 10.0.0.109
Using FEC0 device
TFTP from server 10.0.0.2; our IP address is 10.0.0.109
Filename '/tftpboot/hosts/imx6-sabre.scr'.
Load address: 0x10800000
Loading: #
done
Bytes transferred = 156 (9c hex)
## Executing script at 10800000
FEC: Link is Up 796d
Using FEC0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.109
Filename '/var/lib/tftpboot/uImage'.
Load address: 0x30000000
Loading: ##########################################
done
Bytes transferred = 608911 (94a8f hex)
## Booting kernel from Legacy Image at 30000000 ...
Image Name:
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 608847 Bytes = 594.6 kB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK

Starting kernel ...

:virt_alloc: Allocator 0x200f40b8 dump:
Block: [00001000,10001000) size=256M avail=256M max_avail=256M
Block: [105b5000,20001000) size=256304K avail=256304K max_avail=3144016K
Block: [201ab000,201ac000) size=4K avail=0 max_avail=0
Block: [201ac000,e0000000) size=3144016K avail=3144016K max_avail=3144016K
Block: [f0004000,f0005000) size=4K avail=0 max_avail=3144016K
Block: [f0007000,f0008000) size=4K avail=0 max_avail=0
Block: [f0009000,f000a000) size=4K avail=0 max_avail=262036K
Block: [f000a000,fffef000) size=262036K avail=262036K max_avail=262036K
=> mem_size=4018704384 (3832 MB) / mem_avail=4018688000 (3832 MB)

:phys_alloc: Allocator 0x200f304c dump:
Block: [105b5000,105b6000) size=4K avail=0 max_avail=0
Block: [105b6000,105b7000) size=4K avail=0 max_avail=1042260K
Block: [105b7000,105b8000) size=4K avail=0 max_avail=0
Block: [1062a000,1062b000) size=4K avail=0 max_avail=1042260K
Block: [1062b000,50000000) size=1042260K avail=1042260K max_avail=1042260K
=> mem_size=1067290624 (1017 MB) / mem_avail=1067274240 (1017 MB)

:io_mem_alloc: Allocator 0x200f5130 dump:
Block: [00000000,105b5000) size=267988K avail=267988K max_avail=267988K
Block: [105b8000,1062a000) size=456K avail=456K max_avail=2952790015
Block: [50000000,ffffffff) size=2952790015 avail=2952790015
max_avail=2952790015
=> mem_size=3227676671 (3078 MB) / mem_avail=3227676671 (3078 MB)

:io_port_alloc: Allocator 0x200f619c dump:
=> mem_size=0 (0 MB) / mem_avail=0 (0 MB)

:irq_alloc: Allocator 0x200f7208 dump:
Block: [00000000,00000001) size=1 avail=1 max_avail=1
Block: [00000002,0000001d) size=27 avail=27 max_avail=994
Block: [0000001e,00000400) size=994 avail=994 max_avail=994
=> mem_size=1022 (0 MB) / mem_avail=1022 (0 MB)

:rom_fs: ROM modules:
ROM: [101ae000,101ae158) config
ROM: [10184000,101aa900) init
ROM: [10106000,10183b64) ld.lib.so
ROM: [101ab000,101ad598) test-log


kernel initialized
Genode 17.02-127-gf6386c6 <local changes>
1016 MiB RAM assigned to init
[init -> test-log] hex range: [0e00,1680)
[init -> test-log] empty hex range: [0abc0000,0abc0000) (empty!)
[init -> test-log] hex range to limit: [f8,ff]
[init -> test-log] invalid hex range: [f8,08) (overflow!)
[init -> test-log] negative hex char: 0xfe
[init -> test-log] positive hex char: 0x02
[init -> test-log] multiarg string: "parent -> child.7"
[init -> test-log] String(Hex(3)): 0x3
[init -> test-log] Test done.

Run script execution successful.
--
Stefan Kalkowski
Genode Labs

https://github.com/skalk · http://genode.org/
Kranthi Tej
2017-05-02 13:54:43 UTC
Permalink
Hello Stefan,

Thank you very much for patiently responding to all my queries. After you
have run my uImage on your board successfully, we have changed the hardware
and tried to run the uImage on it. It was working properly. I've been able
to generate the same log that you have attached in your previous email.

We wouldn't have thought of changing the device if it was not for your
help. Thanks a lot! :-)

We are successfully able to run Genode with the uImage generated with
release version as well as the one which I cloned today. This seems to be
working only when I set NR_OF_CPUS = 1. When I tried setting NR_OF_CPUS =
4, the kernel doesn't get loaded and it hangs at "Starting kernel ...". I
am not sure why this is happening.

Is it possible for you to share the boot procedure you've followed and the
details of the boot-loader? It would help us figure if the problem was with
the hardware or with the flashing procedure.

Many thanks,
Kranthi

On Tue, May 2, 2017 at 4:20 PM, Stefan Kalkowski <
Post by Stefan Kalkowski
Hi Kranthi,
I could boot the uImage you provided to me successfully, see below.
Either we have slightly different variants of the same board, or the
boot-loader does something fundamentally different, or you have some
problem when loading the uImage correctly, so that the image gets corrupted.
Sorry, at the moment I do not have another idea, because I cannot
reproduce your problem.
Regards
Stefan
--
U-Boot 2009.08 (Apr 29 2013 - 18:01:51)
CPU: Freescale i.MX6 family TO1.2 at 792 MHz
Thermal sensor with ratio = 188
Temperature: 20 C, calibration data 0x5a35087d
mx6q pll1: 792MHz
mx6q pll2: 528MHz
mx6q pll3: 480MHz
mx6q pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 264000000Hz
emi_slow clock: 132000000Hz
ddr clock : 528000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
nfc clock : 24000000Hz
Board: i.MX6Q-SABRESD: unknown-board Board: 0x63012 [POR ]
Boot Device: SD
I2C: ready
DRAM: 1 GB
MMC: FSL_USDHC: 0,FSL_USDHC: 1,FSL_USDHC: 2,FSL_USDHC: 3
In: serial
Out: serial
Err: serial
Found PFUZE100! deviceid=10,revid=11
Net: got MAC address from IIM: 00:04:9f:02:e2:bb
FEC0 [PRIME]
Hit any key to stop autoboot: 0
FEC: Link is Up 796d
BOOTP broadcast 1
DHCP client bound to address 10.0.0.109
Using FEC0 device
TFTP from server 10.0.0.2; our IP address is 10.0.0.109
Filename '/tftpboot/hosts/imx6-sabre.scr'.
Load address: 0x10800000
Loading: #
done
Bytes transferred = 156 (9c hex)
## Executing script at 10800000
FEC: Link is Up 796d
Using FEC0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.109
Filename '/var/lib/tftpboot/uImage'.
Load address: 0x30000000
Loading: ##########################################
done
Bytes transferred = 608911 (94a8f hex)
## Booting kernel from Legacy Image at 30000000 ...
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 608847 Bytes = 594.6 kB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Starting kernel ...
Block: [00001000,10001000) size=256M avail=256M max_avail=256M
Block: [105b5000,20001000) size=256304K avail=256304K max_avail=3144016K
Block: [201ab000,201ac000) size=4K avail=0 max_avail=0
Block: [201ac000,e0000000) size=3144016K avail=3144016K max_avail=3144016K
Block: [f0004000,f0005000) size=4K avail=0 max_avail=3144016K
Block: [f0007000,f0008000) size=4K avail=0 max_avail=0
Block: [f0009000,f000a000) size=4K avail=0 max_avail=262036K
Block: [f000a000,fffef000) size=262036K avail=262036K max_avail=262036K
=> mem_size=4018704384 (3832 MB) / mem_avail=4018688000 (3832 MB)
Block: [105b5000,105b6000) size=4K avail=0 max_avail=0
Block: [105b6000,105b7000) size=4K avail=0 max_avail=1042260K
Block: [105b7000,105b8000) size=4K avail=0 max_avail=0
Block: [1062a000,1062b000) size=4K avail=0 max_avail=1042260K
Block: [1062b000,50000000) size=1042260K avail=1042260K max_avail=1042260K
=> mem_size=1067290624 (1017 MB) / mem_avail=1067274240 (1017 MB)
Block: [00000000,105b5000) size=267988K avail=267988K max_avail=267988K
Block: [105b8000,1062a000) size=456K avail=456K max_avail=2952790015
Block: [50000000,ffffffff) size=2952790015 avail=2952790015
max_avail=2952790015
=> mem_size=3227676671 (3078 MB) / mem_avail=3227676671 (3078 MB)
=> mem_size=0 (0 MB) / mem_avail=0 (0 MB)
Block: [00000000,00000001) size=1 avail=1 max_avail=1
Block: [00000002,0000001d) size=27 avail=27 max_avail=994
Block: [0000001e,00000400) size=994 avail=994 max_avail=994
=> mem_size=1022 (0 MB) / mem_avail=1022 (0 MB)
ROM: [101ae000,101ae158) config
ROM: [10184000,101aa900) init
ROM: [10106000,10183b64) ld.lib.so
ROM: [101ab000,101ad598) test-log
kernel initialized
Genode 17.02-127-gf6386c6 <local changes>
1016 MiB RAM assigned to init
[init -> test-log] hex range: [0e00,1680)
[init -> test-log] empty hex range: [0abc0000,0abc0000) (empty!)
[init -> test-log] hex range to limit: [f8,ff]
[init -> test-log] invalid hex range: [f8,08) (overflow!)
[init -> test-log] negative hex char: 0xfe
[init -> test-log] positive hex char: 0x02
[init -> test-log] multiarg string: "parent -> child.7"
[init -> test-log] String(Hex(3)): 0x3
[init -> test-log] Test done.
Run script execution successful.
--
Stefan Kalkowski
Genode Labs
https://github.com/skalk · http://genode.org/
------------------------------------------------------------
------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
Stefan Kalkowski
2017-05-03 06:41:17 UTC
Permalink
Hi,
Post by Kranthi Tej
Hello Stefan,
Thank you very much for patiently responding to all my queries. After
you have run my uImage on your board successfully, we have changed the
hardware and tried to run the uImage on it. It was working properly.
I've been able to generate the same log that you have attached in your
previous email.
We wouldn't have thought of changing the device if it was not for your
help. Thanks a lot! :-)
We are successfully able to run Genode with the uImage generated with
release version as well as the one which I cloned today. This seems to
be working only when I set NR_OF_CPUS = 1. When I tried setting
NR_OF_CPUS = 4, the kernel doesn't get loaded and it hangs at "Starting
kernel ...". I am not sure why this is happening.
Is it possible for you to share the boot procedure you've followed and
the details of the boot-loader? It would help us figure if the problem
was with the hardware or with the flashing procedure.
I've used the pre-installed u-boot loader (I think of the SD-Card, not
eMMC) delivered together with the board. This is the u-boot greeting:

U-Boot 2009.08 (Apr 29 2013 - 18:01:51)

I use the following script procedure, first the commands of the
SD-card's boot environment:

dhcp; source 0x10800000

The DHCP server delivers another script:

setenv serverip X.X.X.X
tftp 0x30000000 /var/lib/tftpboot/uImage
bootm 0x30000000

The last commands load the uImage file from my machine and runs it.

Best regards
Stefan
Post by Kranthi Tej
Many thanks,
Kranthi
On Tue, May 2, 2017 at 4:20 PM, Stefan Kalkowski
Hi Kranthi,
I could boot the uImage you provided to me successfully, see below.
Either we have slightly different variants of the same board, or the
boot-loader does something fundamentally different, or you have some
problem when loading the uImage correctly, so that the image gets corrupted.
Sorry, at the moment I do not have another idea, because I cannot
reproduce your problem.
Regards
Stefan
--
U-Boot 2009.08 (Apr 29 2013 - 18:01:51)
CPU: Freescale i.MX6 family TO1.2 at 792 MHz
Thermal sensor with ratio = 188
Temperature: 20 C, calibration data 0x5a35087d
mx6q pll1: 792MHz
mx6q pll2: 528MHz
mx6q pll3: 480MHz
mx6q pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 264000000Hz
emi_slow clock: 132000000Hz
ddr clock : 528000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
nfc clock : 24000000Hz
Board: i.MX6Q-SABRESD: unknown-board Board: 0x63012 [POR ]
Boot Device: SD
I2C: ready
DRAM: 1 GB
MMC: FSL_USDHC: 0,FSL_USDHC: 1,FSL_USDHC: 2,FSL_USDHC: 3
In: serial
Out: serial
Err: serial
Found PFUZE100! deviceid=10,revid=11
Net: got MAC address from IIM: 00:04:9f:02:e2:bb
FEC0 [PRIME]
Hit any key to stop autoboot: 0
FEC: Link is Up 796d
BOOTP broadcast 1
DHCP client bound to address 10.0.0.109
Using FEC0 device
TFTP from server 10.0.0.2; our IP address is 10.0.0.109
Filename '/tftpboot/hosts/imx6-sabre.scr'.
Load address: 0x10800000
Loading: #
done
Bytes transferred = 156 (9c hex)
## Executing script at 10800000
FEC: Link is Up 796d
Using FEC0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.109
Filename '/var/lib/tftpboot/uImage'.
Load address: 0x30000000
Loading: ##########################################
done
Bytes transferred = 608911 (94a8f hex)
## Booting kernel from Legacy Image at 30000000 ...
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 608847 Bytes = 594.6 kB
Load Address: 10001000
Entry Point: 10001000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Starting kernel ...
Block: [00001000,10001000) size=256M avail=256M max_avail=256M
Block: [105b5000,20001000) size=256304K avail=256304K
max_avail=3144016K
Block: [201ab000,201ac000) size=4K avail=0 max_avail=0
Block: [201ac000,e0000000) size=3144016K avail=3144016K
max_avail=3144016K
Block: [f0004000,f0005000) size=4K avail=0 max_avail=3144016K
Block: [f0007000,f0008000) size=4K avail=0 max_avail=0
Block: [f0009000,f000a000) size=4K avail=0 max_avail=262036K
Block: [f000a000,fffef000) size=262036K avail=262036K max_avail=262036K
=> mem_size=4018704384 (3832 MB) / mem_avail=4018688000 (3832 MB)
Block: [105b5000,105b6000) size=4K avail=0 max_avail=0
Block: [105b6000,105b7000) size=4K avail=0 max_avail=1042260K
Block: [105b7000,105b8000) size=4K avail=0 max_avail=0
Block: [1062a000,1062b000) size=4K avail=0 max_avail=1042260K
Block: [1062b000,50000000) size=1042260K avail=1042260K
max_avail=1042260K
=> mem_size=1067290624 (1017 MB) / mem_avail=1067274240 (1017 MB)
Block: [00000000,105b5000) size=267988K avail=267988K max_avail=267988K
Block: [105b8000,1062a000) size=456K avail=456K max_avail=2952790015
Block: [50000000,ffffffff) size=2952790015 avail=2952790015
max_avail=2952790015
=> mem_size=3227676671 (3078 MB) / mem_avail=3227676671 (3078 MB)
=> mem_size=0 (0 MB) / mem_avail=0 (0 MB)
Block: [00000000,00000001) size=1 avail=1 max_avail=1
Block: [00000002,0000001d) size=27 avail=27 max_avail=994
Block: [0000001e,00000400) size=994 avail=994 max_avail=994
=> mem_size=1022 (0 MB) / mem_avail=1022 (0 MB)
ROM: [101ae000,101ae158) config
ROM: [10184000,101aa900) init
ROM: [10106000,10183b64) ld.lib.so <http://ld.lib.so>
ROM: [101ab000,101ad598) test-log
kernel initialized
Genode 17.02-127-gf6386c6 <local changes>
1016 MiB RAM assigned to init
[init -> test-log] hex range: [0e00,1680)
[init -> test-log] empty hex range: [0abc0000,0abc0000) (empty!)
[init -> test-log] hex range to limit: [f8,ff]
[init -> test-log] invalid hex range: [f8,08) (overflow!)
[init -> test-log] negative hex char: 0xfe
[init -> test-log] positive hex char: 0x02
[init -> test-log] multiarg string: "parent -> child.7"
[init -> test-log] String(Hex(3)): 0x3
[init -> test-log] Test done.
Run script execution successful.
--
Stefan Kalkowski
Genode Labs
https://github.com/skalk · http://genode.org/
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
<https://lists.sourceforge.net/lists/listinfo/genode-main>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
--
Stefan Kalkowski
Genode Labs

https://github.com/skalk · http://genode.org/
Loading...