This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Confused about developing for AM335x

Other Parts Discussed in Thread: AM3352

We intend to build a custom board using the AM3352 processor, probably close to the BeagleBone board but without the HDMI output. We intend to use the Ethernet switch, SPI, serial interfaces, USB, and I2C interfaces. 

I've got a BeagleBone Black board and the EVMSK board and I'm struggling to get them to boot the simplest examples let alone workout how to move forward on developing our own board. 

I've read all about Yocto, Arago, and the TI SDK's, and I've run many of the builds and some work, generally the build succeeds but I can't get the build to boot on the board or in qemu, or some key feature, like the Ethernet doesn't work. 

It all sounds great and it seems like I should be able to pick a direction but I'm really at a loss on what to do going forward. There are just to many options without enough step by step documentation beyond the simple examples.

The SDK seems very simplistic, basically a compiler and pre-built configured image without much facility for adding and removing things. Am I correct, or am I missing something? 

We will probably want our own minimal Linux image so that would imply I want to create a custom BSP and layers using Arago or Yocto, but despite all the claims that it's easy and the quick start guides I'm still at loss on how to do this. The guides all seem to stop at the point where you build the standard out of the box images and don't really go into customizing things. It really seems like the docs stop after the simple pre-configured examples and then pick up again with the really really detailed stuff, sort of skipping the really useful stuff in between.  Furthermore the learning curve for BitBake, OE, Yocto, Poky, and Arago is huge and every time I dive in and try to work things out I get lost and I feel like I've gone down the wrong path. 

I've developed software for other TI processors on custom boards and I don't think I've ever had so much trouble picking a direction.

I'd really appreciate any insights on how I should be approaching this.

Thank you,
Matt Schuckmann

  • Hi Matt,

    I don't know if you have come across these links, but if you haven't check them out:

    http://arago-project.org/wiki/index.php/Main_Page

    http://arago-project.org/wiki/index.php/Setting_Up_Build_Environment

    http://processors.wiki.ti.com/index.php/Sitara_Linux_Training

    http://processors.wiki.ti.com/index.php/Sitara_Linux_Training:_Getting_Started_with_Openembedded

    If you plan to use SDK 06.00.00.00 you can also check these out:

    http://processors.wiki.ti.com/index.php/Sitara_Linux_Training:_UBoot_Board_Port

    http://processors.wiki.ti.com/index.php/Sitara_Linux_Training:_Linux_Board_Port

    The board port labs are included in the SDK and you can follow them to get some training. You can find them inside <sdk_dir>/board-support/board-port-labs/

    Matthew Schuckmann1 said:
    The SDK seems very simplistic, basically a compiler and pre-built configured image without much facility for adding and removing things. Am I correct, or am I missing something? 

    The SDK provides complete source code for the U-Boot and Linux kernel and you can modify them, add/remove features and rebuild them. However the SDK only provides a pre-generated root file system, which may be modified by using the opkg tool:

    http://processors.wiki.ti.com/index.php/AMSDK_File_System_Optimization/Customization

    Best regards,
    Miroslav

  • Thank you Miroslave, 

    I've been through pretty much all of those links and they don't go into enough depth, they provide the basic minimum commands need to checkout or download the code and build the pre-configured images and that's it. 

    The other problem is there are too many options to choose from with differentiation on why a developer would chose one path over the other. 

    We plan to make our own board with a minimal linux image so no package management, so now that you state that opkg is expected with the SDK, use of the SDK is out. 

    It's taken me a while to figure out what Arago is and I'm still not sure that I've really got it, I think it's just like Yocto but with a different set of upper layers, Does Arago have different target images besides "core-image-minimal" different distro's, does it have a tiny distro? For that matter what's the difference between a distro like Arago and a target like core-image-minimal they seem to be the same thing but some how different?

    I have no idea how I'd remove things from the Arago distro to keep my image small, or how to switch to a different kernel version? Do I create a new layer? if so how do you remove change things from lower layers? I wouldn't think that I'd want to change the meta-arago layer files directly since that would make it difficult to bring in changes from the TI repos when the next release becomes stable (besides it seems like that would defeat the whole purpose of the layering system.) 

    On top of all of this it seems like %90 of the images I've built following the basic instructions don't work.

    SDK 7.0 has the networking problem, I still don't understand how to get it to work with out changing the kernel.
    From Arago I've tried the daisy, dora, dylan, and danny configs and I don't think any of them worked out of the box. The only Arago configuration I've gotten to boot and have minimally complete functionality is the amsdk-06.00.00.00-config.txt. 

    I've tried building basic yocto images but the default kernel is 3.12 that has the networking bug so it doesn't work, I still haven't figured out to switch to a different kernel. The bitbake configuration files are very byzantine and as a new comer it's difficult understand things. 

    There is also the very confusing fact that you switched from producing the kernel as uImage to zImage somewhere between SDK 1.6 and 1.7 but didn't update all the documentation that states that you need uImage. 

    Since I want pretty a minimal linux image I played with poky-tiny from Yocto but in Yocto 1.6 it won't boot in qemux86 (I've created a bug) and they don't provide support for ARM machines so I'm back at square one there. 

    Since the SDK 6.0 release is the only thing that seems to work (so far) should I go forward with 6.0 from Arago? or some equivalent from Yocto? Or would it be better to move forward to the latest kernel? Yes there are some tutorials on creating layers but they assume "A LOT". 

    The most helpful tutorial I've found so far is 
    http://hambedded.org/blog/2012/11/24/from-bitbake-hello-world-to-an-image/
    but only the first half, because it gave me a foundation for how BitBake works. 

    I'm starting to realize that I need to be looking for tutorials on OpenEmbedded, not Arago or Yocto because the tutorials on Arago and Yocto assume that you understand OpenEmbedded. 

    I haven't been through The Getting started with Openembedded tutorial but I think that's because it focuses on SDK 6.0 and at the time I came across it I was focusing on SDK 7.0.

    One last thing, what's with all the versions and names? It's almost impossible to keep things straight I had create my own spreadsheet to relate names to version numbers across all the projects. I've tried to inspect the git trees to discern  the branch hierarchy that's not easy. Of course it doesn't help that your Arago wiki page points at: http://git.yoctoproject.org/cgit/cgit.cgi/meta-ti/ but the Arago config files point at: git://arago-project.org/git/projects/meta-ti-amsdk.git

    I'm 2-3 weeks into trying work with this stuff and I feel like I've been spinning my wheels and haven't gotten very far. 

    Matt S. 

    PS Thanks for reading this and responding, I am making progress it's just slow and frustrating. 

  • I fully understand you. Most of these tutorials are useless for some serious work. It took me few months to create a filesystem for a custom board. Probably the most helpful resource I have found so far is the #oe IRC channel on FreeNode. Also, you should read Yocto manual (http://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html) -- it won't tell you how to create your own filesystem, but at least it gives a pretty good idea how things get together.

  • I really appreciate your inputs. I have forwarded this post to our Linux/SDK team and the plan is to see what we could do to make the development easier for our customers.

  • Hi  Matthew ,

    I understand your frustration and I hope I can point you to the right direction.

     

    First thing I recommend is checking out this video that talks about Arago.

    http://focus.ti.com/docs/training/catalog/events/event.jhtml?sku=OLT113005

    Quick Summary:

    Arago is a TI distribution that is built on top of OE/Yocto. OE is simply a build framework to create a Linux distribution. Yocto has a distribution, Angstrom is a distribution and Arago are all distributions created via Openembedded. So your comment about a lot of Arago documentation stopping short at starting an initial build is correct since the knowledge you really need is related to Openembedded since those skills are what is used to create distributions.

    There are several Openembedded trainings out there that are tailored to generic OE/Yocto so it may not provide something useable on a TI platform since they use a different kernel and u-boot. Meta-ti is the only supported location for BSP software for TI devices so unless your training has you using meta-ti then you will likely have problems getting an image working on a TI board.

    I highly recommend that you read through the Getting Started with Openembedded presentation (http://processors.wiki.ti.com/index.php/Sitara_Linux_Training:_Getting_Started_with_Openembedded). Very little concepts are actually specific to SDK 6. The biggest being the config file to use with oe-layersetup. So you would use amsdk-07.00.00.00-config.txt instead of amsdk-06.00.00.00-config.txt. The labs will not work as is but the concepts are still valid and you shouldn't have an issue making the minor tweaks to get it to work on the 7.0 based config. However, that training I believe answers almost all of your questions and helps you get started. It assumes you know nothing about OE so it tries to teach some basic OE skills that are needed to properly navigate the various recipes in meta-arago.

  • Matthew Schuckmann1 said:

    It all sounds great and it seems like I should be able to pick a direction but I'm really at a loss on what to do going forward. There are just to many options without enough step by step documentation beyond the simple examples.

    Hi Matthew,

    I'm faced with the same problems like you and have posted some questions too:

    http://e2e.ti.com/support/embedded/linux/f/354/p/359271/1261397.aspx#1261397

    I try to sum up what i think could help you:

    1. Best way to create a custom linux image is to use yocto

    2. Following instructions on arago website you will be able to create different images

    i use arago-dora-config.txt and could create different arago-xxxx and tisdk-xxxx images.

    The available images are listed in ./sources/meta-arago/meta-arago-distro/recipes-core/images.

    3. You don't need TI SDK or TI Graphics SDK, because the meta files in directory meta-ti contains informations how to downoad,configure and compile the Bootloader, Kernel and DTB files. As result of creating tisdk-rootfs-image, you should get all needed files to boot linux from your beaglebone black.

    4. I think that the version's of kernel, bootloader and all the tools installed into the RFS are depended to the branches of meta-ti, meta-arago, meta-qt und so on, that you are using. The dora branch as example defines in the meta files to use kernel 3.12.y.

    5. In the end all the "magic" that will happen during image creation is described in the mass of config files(recipes) in the meta-xxx directories. So it is up to you to understand all the yocto tasks.