Update: uMon is now booting from SD

Jarielle Catbagan jcatbagan93 at gmail.com
Sat Jul 4 18:29:25 UTC 2015

Great to hear that it's working now!

For the "raw" mode, a Configuration Header TOC Structure had to be
prepended before the GP header, am I right?

What are the other tasks that you would recommend I pursue.  I am
thinking of getting the DDR initialization working and then Ethernet.
What are your thoughts?


On Sat, Jul 4, 2015 at 11:19 AM, Ed Sutter <edsutterjr at gmail.com> wrote:
> On 7/4/2015 2:02 PM, Jarielle Catbagan wrote:
>> 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
>> Ed,
>> 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:
>> https://www.sdcard.org/downloads/formatter_4/SDFormatter_4e.pdf,
>> 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
>> mnt
>> $ 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.
>> Thanks.
> Ok, I managed to get it to boot using only Linux for formatting the card.
> It wasn't working for me until I just read your email and realized I did not
> mark
> the partition active.  After doing that it booted!
> So here are the steps I walked through
> (extracted from: http://forum.xda-developers.com/showthread.php?t=502095) :
> 1. Verify the partition that the SD card installs as:
>      - cat /proc/paritions (without the uSD)
>      - Insert uSD card
>      - cat /proc/paritions (note the difference)
> Using /dev/sdc as our partition:
> 2. sudo fdisk /dev/sdc
>     - delete all paritions with 'd' command (d1/d2/d3/d4) as needed
>     - use 'n' command to create partition 1
>     - use 't' command to relabel partition 1 to 'c'
>     - use 'a' command to make the parition active
>     - use 'p' to show something like:
>    Device Boot      Start         End      Blocks   Id  System
> /dev/sdc1   *        2048     3932159     1965056    c  W95 FAT32 (LBA)
>      - use 'w' to write to the card
> 3. Run sudo mkfs.vfat /dev/sdc1
> 4. Mount /dev/sdc1 as /media/boot (or whatever)
> 5. Copy MLO to /media/boot
> 6. Run sync; unmount /media/boot
> 7. Put card in BBB, reset with boot button depressed.
> _______________________________________________
> 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