We're currently starting to use the CM3 in our hardware designs and slowly increase our knowledge around the bcm2837 and embedded computing in general. We've started a github project where we'll be uploading all docs, tools and hardware we create github.com/QutiPi if anyone is interested.
A side note to the below is we're using a custom distro generated via yocto (in above repo). This uses the Raspberry Pi kernel and bootloaders so should not play any effect in the issue we're having (as its a boot stage issue) .
We are using the CM3 atm to control a vacuum reservoir system which consists of a range of valves among other things. Hence we need to ensure that certain ports are held low or high impedance at boot up.
From reading around, broadcom, uses a dt-blob.bin file to allow the bootloader to configure ports at startup before the linux kernel runs. The dt-blob file is wrote to the device tree standard and is compiled using the device tree compiler, however it is not a device tree. The dt-blob file is loaded before the bootloader configures the peripherals, hence allowing it to customise the default states. Please correct me if i'm wrong?
We have used the dt-blob to setup the Raspberry Pi official 7" LCD, hence we know that the bootload is loading the dt-blob.bin file from the boot partition. We have also decompiled the dt-blob.bin file created and it does correctly represent the initial dts file.
However the additional configuration we have added in the dt-blob file to set gpio 35 low does not seem to take effect for up to 3 seconds (see attached).
I don't quite understand why gpio 35 is place high in the first place if my understanding of the boot process is correct?
Can anyone let me know if this seems legit or way off haha? I've also attached the dt-blob files, config.txt and cmdline.txt.