On 03/26/2015 11:35 AM, Jarielle Catbagan wrote:
It looks like the internal ROM-based bootloader looks for a secondary
program loader (SPL) that initializes the necessary devices to
continue the boot process and pass control to a third-stage
bootloader. So now I believe it's a matter of finding whether there
are existing code implementations of this SPL, or last-case scenario
this would have to be implemented. Time for more investigating. :)
My off the top of my head recommendation is to document the
sequence the BB goes through during initialization. Then
start with a goal of replacing U-Boot in that sequence with
Micromonitor. This keeps us in the world of at least documented
with code. However U-Boot has to be formatted, linked, etc.
is exactly what you will have to do with your Micromonitor.
U-Boot can be a reference but not a source of code.
The previous stages may be able to be replaced later but
I wouldn't worry about that now.
On Thu, Mar 26, 2015 at 9:27 AM, Jarielle Catbagan
<jcatbaga...@gmail.com> wrote:
To put things into context in regards to the conversation that I was
having with Ed, Dr. Joel, and Gedare:
I am currently in the process of looking into porting MicroMonitor to
the Beaglebone Black. As indicated by Ed, "[t]he difficulty of the
port will depend on how much existing CPU-initialization
(clocks, cache, etc..) code we can reuse."
Ed and the authors of the RTEMS code would have to agree but,
in principle, anything in the Beagle BSP should be fair game for
reuse in Micromonitor.
Ed has also indicated to me that there might be an internal bootloader
stored in a ROM-based memory that might look for an image in a
specific format. I will definitely be investigating more into this.
I did manage to briefly browse through the Beaglebone Black System
Reference Manual Rev C.1 [1], and I have found that the boot
configuration/process is briefly elaborated in section 6.7. For
convenience, since it's a short section I will post it here:
"The design supports two groups of boot options on the board. The user
can switch between these modes via the Boot button. The primary boot
source is the onboard eMMC device. By holding the Boot button, the
user can force the board to boot from the microSD slot. This enables
the eMMC to be overwritten when needed or to just boot an alternate
image...
[T]the processor-external boot code is composed of two stages. After
the primary boot code in the processor ROM passes control, a secondary
stage (secondary program loader -- "SPL" or "MLO") takes over. The SPL
stage initializes only the required devices to continue the boot
process, and then control is transferred to the third stage "U-boot".
Based on the settings of the boot pins, the ROM knows where to go and
get the SPL and UBoot code. In the case of the BeagleBone Black, that
is either eMMC or microSD based on the position of the boot switch."
I was kindly guided to look into programming a uSD card as it might be
more efficient to run MicroMonitor off of the uSD for quick testing
after every build. If all goes well, either an application image will
be located and booted off of the same SD card or via a network boot.
For serial debugging I have an FTDI 3.3V USB-to-Serial cable that I
have been previously using to access the U-boot monitor on the
Beaglebone Black.
This is how we do a lot of our testing. It isn't worth the effort
to put something on the board itself. Plus it places wear and
tear on a replaceable item, not on the built-in flash.
[1]
https://github.com/CircuitCo/BeagleBone-Black/blob/master/BBB_SRM.pdf?raw=true
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel
--
-- Joel Sherrill
Ask me about RTEMS: a free RTOS
Support and Training Available
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel