Update: uMon is now booting from SD

Jarielle Catbagan jcatbagan93 at gmail.com
Sat Jul 4 18:02:08 UTC 2015

On Sat, Jul 4, 2015 at 9:54 AM, Ed Sutter <edsutterjr at gmail.com> wrote:
> On 7/4/2015 11:23 AM, Jarielle Catbagan wrote:
>> On Sat, Jul 4, 2015 at 6:50 AM, Ed Sutter <edsutterjr at gmail.com> wrote:
>>> On 7/3/2015 8:49 PM, Jarielle Catbagan wrote:
>>>> Hi Ed,
>>>> On Fri, Jul 3, 2015 at 6:03 AM, Ed Sutter <edsutterjr at gmail.com> wrote:
>>>>> On 7/2/2015 9:27 PM, Jarielle Catbagan wrote:
>>>>>> Hello Ed and all:
>>>>>> uMon is now booting from SD!
>>>>>> As Ed has indicated to me, the first reason why uMon did not appear to
>>>>>> boot from SD was that UART initialization was not performed when the
>>>>>> AM335x was booting from memory.  Originally, when uMon was booting
>>>>>> from UART, as Ed has mentioned to me, uMon was working and was able to
>>>>>> use the UART because it appears that the UART was set up already by
>>>>>> the internal ROM code during the UART boot procedure.
>>>>>> The UART initialization was suppose to be done in cpuio.c.  Ed has
>>>>>> sent me a diff containing the necessary modifications/additions that
>>>>>> has served as the basis for the UART initialization.  After applying
>>>>>> this diff to the current uMon tree, building the uMon image and
>>>>>> transferring the image to an SD card, attempting to boot from SD still
>>>>>> resulted in the BBB to appear to not boot up.
>>>>>> Ed has mentioned to me that one of the possible reasons why the SD
>>>>>> boot is not coming through could be something that is missing during
>>>>>> the UART initialization like clock management or power control.  This
>>>>>> has prompted me to go back and look through the AM335x TRM,
>>>>>> specifically on the sections regarding the PRCM (Power Reset Clock
>>>>>> Management) and UART modules.
>>>>>> It turned out that one of the UART0 registers, register MDR1, the
>>>>>> MODESELECT field had the value 0x07 which translates to the UART
>>>>>> module being disabled. Since the UART in uMon is already set up to
>>>>>> work with UART 16x mode, and the value for this mode is 0x00, this was
>>>>>> stored in the MODESELECT field of the MDR1 register.
>>>>>> After setting this field the uMon image was rebuilt, the GP header was
>>>>>> prepended to the image and was transferred to the SD card as "MLO".
>>>>>> Booting the SD card resulted in uMon being able to boot and to reach
>>>>>> the uMon command line.
>>>>>> My next steps before proceeding to finish DDR initialization is to
>>>>>> clean up the updated files that perform the necessary UART
>>>>>> initialization and then I will submit the patches that reflect these
>>>>>> changes for review.
>>>>>> _______________________________________________
>>>>>> umon-devel mailing list
>>>>>> umon-devel at rtems.org
>>>>>> http://lists.rtems.org/mailman/listinfo/umon-devel
>>>>> Congratulations!  Big step IMHO...
>>>> Thank you!
>>>>> This will allow you to experiment a bit more without the need to reboot
>>>>> manually each time.
>>>>> Looking forward to the patches!  I assume you used a FAT formatted SD
>>>>> card
>>>>> to do this?
>>>> Yes, I booted the uMon image from a FAT32 formatted SD card.
>>>>> Make sure you put everything in the port directory needed to reproduce
>>>>> this.
>>>>> When you submit the patches I'll push them and then whatever work I did
>>>>> that
>>>>> does not
>>>>> overlap with your patches I'll push up as well.
>>>>> Great stuff!!!  And excellent reporting!!!
>>>>> Ed
>>>> I just finished the patches and I sent them already to umon-devel for
>>>> your review.  Please let me know if there are any inconsistencies with
>>>> the patches and I'll be glad to make the necessary changes in order
>>>> for the patches to meet the specification that you are looking for.
>>>> Thanks!
>>>> Best Regards,
>>>> Jarielle
>>>> P.S. Have a great Independence Day weekend! :-)
>>> Jarielle,
>>> I didn't look at the patches yet, but I'm sure there won't be any
>>> inconsistencies.  The only
>>> point I was making with reference to me pushing some stuff in as well was
>>> to
>>> make sure
>>> that we have everything that's been done put into the port for use by
>>> folks
>>> in the future.
>> I agree.
>>> For example, I just happened to take the "raw" mode approach, so I want
>>> to
>>> make sure
>>> that is in the port, plus I did that LED/GPIO stuff so while its very
>>> trivial, its still more to
>>> go into the port for general use.
>>> Thanks for the patches!
>>> Ed
>> That's great to hear! Yeah, being able to boot using "raw" mode is a
>> nice option to have.  Integrating the LED/GPIO into the port would be
>> nice as well.  I think it would be cool to blink some LEDs for status
>> indication when uMon is running.  What do you think?
> Jarielle,
> Ok I pulled in the patches and things built clean.  I see an MLO file that
> is the concatenation of
> gp_header.bin and boot.bin.  Unless I missed something, there are no
> instructions for the final
> step of creating the SD card.  For the raw mode, its just a 'dd'; but I
> suppose there's more to it
> for FAT correct?
> Can you add some instructions for this?  Assume the card is not
> pre-formatted as FAT.  Start
> from scratch.  Then I'll follow those steps to install the card on my board
> to verify.
> Tx


Sorry about that.  I'll create some instructions to detail how to
setup the SD card.  In the meantime, below are the steps I took to
format an SD card with a FAT partition marked as active.

I took somewhat of an inefficient approach because I formatted the SD
card on Windows and then configured the FAT partition on Linux (i.e.
marking the partition as active).  I am going to try to figure out how
to do all the steps on Linux.

The reason why I formatted the SD card on windows was becuase there is
an official SD formatter from
https://www.sdcard.org/downloads/formatter_4/ to format an SD card.
This formatter takes care of everything especially setting up the
FAT32 partition on the SD card as well as setting up the MBR in case
it was overwritten.

With the SD formatter, I simply did a Full Erase.  More information
about the "Full Erase" and what is performed exactly in this step can
be found in the SD formatter User Manual here:
section Section 5.

After that, I proceeded to configure the SD card on Linux.

Assuming the SD card is under /dev as "sdc" to mark the FAT partition
as active, the command I used is

$ sudo fdisk /dev/sdc

Once I entered the 'fdisk' utility, I used the 'a' option to mark the
partition as active, I verified it by printing the partitions with
'p', and then once I verified it I wrote it to the SD card with the
'w' option.

Next I mounted the SD card so I could place the MLO file.

The FAT partition should be under /dev/sdc1 assuming that the base of
the SD card is at /dev/sdc.

In my case, I mounted the SD card in a directory called 'mnt' in my
home directory.  The sequenc of steps I took from here are:

$ cd ~
$ mkdir mnt
$ sudo mount /dev/sdc1 mnt
$ sudo cp $(HOME)/source/umon/ports/beagleboneblack/build_BEAGLEBONEBLACK/MLO
$ sudo umount mnt

After this, you should be good to go.

Please let me know if you encounter any issues or if any of the steps
can not be completed, especially formatting the SD card.

> _______________________________________________
> umon-devel mailing list
> umon-devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/umon-devel

More information about the umon-devel mailing list