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.

Kernel Debugging for newbies, and similarly dumb questions

Other Parts Discussed in Thread: OMAPL138

Hello, 

So I'm completley new to linux development, about all I new how to do is compile things with gcc and make some very basic make files. I'm now diving into platform development on it and there are some things I'm used to from using WinCE and want to see how-to's if at all possible.

The first thing I'm trying to figure out is Kernel Debugging. This was kind of easy on our OMAP platform using wince, deploying, setting breakpoints, was all handled by Visual Studio 2005. I could even set different breakpoints in programs built for that platform and run them on the device and hit those breakpoints while running the debugger. I'm kind of confused as to whether or not KDGB is supported or even if thats what I'm looking for. It looks like what I want, but I've only found a patch for 2.6.25, and something about it being merged with 2.6.35 or something. 

How to deploy applications to debug on the device. Right now we use activesync so its just a matter of finding room in the object store or on what ever partition we have created. I'm guessing we can do this with eclipse or ccs5 with a ethernet or usb? Not using the jtag, so far our platform doesn't seem to let linux live on the device after deployment.

Is it possible to compile applications on a windows machine using the codesourcery tool chain. I've installed it for windows but haven't gone beyond that point yet. But eventually the device will end up talking to our pc app, the pc app talks to all the devices we have right now, it does this by pushing an executable over via usb and talking to it. The one thing I'll be looking to do is making a project that can build a linux arm target, on a windows machine to be bundled with this program.

Anything else that I might encounter along the way you can think of. I've figured out how to rebuild linux, uboot, configure it for nand, burn it to the device and boot from the nand. Although I havn't figured out how to save the uboot settings yet so it has uImage on the nand but fails to boot from a cold boot any way. I'm really just exploring right now, we have a trial for windows ce 7 and just playing with this for now.

  • This is a lot of information to cover in one post, lets start at the beginning, what is the platform that you're targeting to work with?

    The reason I ask is because some or most current platform SDKs provide the toolchain that is being used now. Typically for linux development we do not recommend building under a windows environment, not because it can't be done, but one big reason is because we provide the toolchain now in the SDK and it is linux based. We do not use Code Sourcery anymore.

    I have not developed for WinCE and am not familiar with Visual Studio, there are probably a lot of paradigms that are not going to translate.  For example the active sync and object store not sure what this is. In Linux, not always, applications are developed with a network mounted root file system for the target, you can build on the host and install in a directory that is being exported.

    Here is a link to the Software Developer's Guide for the AM-SDK devices that talks about the development environment.

    http://processors.wiki.ti.com/index.php/AM37x_EVM_Software_Developer%27s_Guide#Start_your_Linux_Development

    As a getting started we recommend using a virtual machine to run a linux environment on a Windows machine. The above link explains how to get started.

    This one is a block diagram of what the development environment can look like:

    http://processors.wiki.ti.com/index.php/File:AM37x_Env_ov_1_KC.jpg

     

  • Thanks for the reply. I'd say right now "developing" isn't the term I'd be using to describe what I'm doing. More of trying to get a hold of platform development on linux. But the platform I'm experimenting with is an OMAPl138. I'm 99% positive that we are going to be using some cortext a8 platform coming up,  I'm just trying to get as much knowledge of this before hand in case it swings that way. 

    Activesync is just microsfts usb driver that makes everything stupidly easy for connecting to devices. The object store is basically a filesystem created in memory at start up. So when debugging an app targeting a device, if it doesn't have a filesystem you can always deploy the program to the object store, which isn't persistent. Those links defintily help with the application developement. 

    As for building a an app on windows, this isn't something that needs to be done but it would be extremely helpful. We have an internal tool we use for testing, which pretty much edited by any one that needs to extend it to some hardware no ones touched yet. So if we could keep the build together like it is now that would be awesome. This doesn't even need to be optimized arm code or anything special.

    Regardless of all that, the most important thing for me to understand is kernel and driver debugging. If you have any resources on how platform development on linux will tackle that... that would be AWESOME.