Posts

Showing posts with the label OMAP

my kernel does'nt boot: the magic of EARLY_PRINTK

I am subscribed to TI's e2e portal and this post peeked my interest. Since sometime in mainline kernel we've had issues with kernel not booting up due to some weird bugs. As a kernel developer, I have screwed up multiple times preventing kernel boot from happening. Typical build results in: ## Booting kernel from Legacy Image at c0700000 ... Image Name: Linux-2.6.32-rc6 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1939152 Bytes = 1.8 MB Load Address: c0008000 Entry Point: c0008000 Verifying Checksum ... OK Loading Kernel Image ... OK OK Starting kernel ... And that's it - no useful messages for the kernel geeks to figure out where the boot sequence crashed, no real debug information at all! So the first question: why the kernel silence? The boot messages can only be printed once you have the serial port enabled. Now, serial port enablement itself could be pretty much later in the kernel boot sequence, if the system crashes(oops/data abort e...

Public OMAP4 TRM released

TI has released public OMAP4430 TRM and clock tool in the official site today. :).. yaay.. [ WARNING 17 Oct 2012 ]: ALWAYS GO HERE  for the very latest documentation - Thanks to a few people ignoring the "official site" link above TRM gives you indepth insight into what OMAP4 is all about and the clock tool is my favourite tool especially to understand the complex clock framework dependencies on OMAP chips - the released version is custom to TI OMAP4 platform though.. but effective tool if you like to learn/debug/understand the clock framework dependencies -> all the way from the oscillator you use on the board to the clocks you use in the functional block of interest.. originally note from Mythri on Linux OMAP [update: ctt wiki ]

Plato! trace-visualize-debug-filter code path!

Got this link from a colleague - kinda useful if you would like to use it for your own purposes.. quote from the site: PLATO is a tool for displaying and analyzing software traces from an application being debugged. It connects to TTIF (libttif.so, included) which provides a lower overhead replacement for printf(), so as to minimize the chance that timing related bugs disappear when you enable debug traces, and also some binary trace APIs. PLATO can be running on a separate PC from the application being debugged, making it suited for embedded development. PLATO will decode/filter/display/visualize the traces

towards a integrated infrastructure for feature + errata handling in kernel

I have a confession to make: I am fanatic about clean code. I like it simple and I like it elegant. Few days back, I had a chat on linux omap mailing list on what I'd dream to see instead of a half a dozen cpu_has_feature_XYZ() APIs in the system.. The thought is more of this form: Some sort of infrastructure which is common to all silicons,platforms exist which provides method to register the tuple (silicon_rev_id | ip_module_rev_id, feature_errata_id) Specific drivers such as DMA, I2C, McBSP, PRCM etc.. on registration provides to the system the an array of tuples for that device. Platform on bootup provides the platform_data to the driver, which allows the driver to start, but now, it can also detect cpu_rev and can grap it's own IP Module rev from it's own register.. -> that is provided to the infrastructure Every time there is a need to check to enable/disable feature/errata, all the code needs to do is: if (is_enabled(dev, OMAP3_ISP) ) { do my stuff; } is...

omap PM in elinux.org!

Kevin (PM) has put some cool stuff up on elinux page. may want to check it out..

TI's e2e portal

TI has a engineer to engineer forum here: http://e2e.ti.com/ forums this allows folks to: a) Get a direct and quick answer for a technical question b) lookup and search for old solutions which might help current problems one might face. Some of the interesting forums are: Code Composer Studio OMAP Application Processor Power Management IC such as TWL5030 TPS derivatives it even allows you to have a email notification and bunch of usual stuff..

gst dsp - an alternative to openmax IL

Felipe C recently published gst-dsp Source: http://github.com/felipec/gst-dsp/tree/master Webpage: http://code.google.com/p/gst-dsp/ This is an alternative to the gstreamer plugins of gstreamer on TI Davinci and OMAP and openmax for OMAP gstreamer for TI Davinci and OMAP builds on top of dsplink while openMAX for OMAP builds on top of dspbridge -> interestingly gst-dsp builds on top of dspbridge. Try and do comment.. and dont forget to send your patches ;).. I have'nt had much chance to dig much into this new code yet -> but it sure looks sleek and full of potential

OMAP power management simplified(?)

Background: Excerpts from the thread here A detailed presentation done by Richard Woodruff can be found here To start this discussion, think what OMAP really is.. OMAP is made of multiple small parts inside it (peripherals) - each peripheral can be individually shut off or switched on as need be. OPP or Operating Points: In fact OMAP could also be used like a car gear, if you need higher processing power, switch to a different "operating point". Each of these operating points is a set of voltage and frequencies that each peripherals and OMAP functions at -> usually the main peripherals of interest from a speed perspective are ARM and DSP, but like a car, when you speed up, you will consume more power.. [BUT unlike a car, during operation, OMAP's carbon footprin t is pretty tiny] Suspend/Resume: Since OMAP is also made up of various peripherals, you can switch off many of these peripherals when not in use, in fact you can have many levels of "switch off" = re...

U-Boot v2 Finally in progress

Phew, things are not settled yet, but U-Boot V2 work has started, the single man army is crunching code ;)... anyways.. for folks interested in my U-Boot patches and discussions on the list, here is quick link for TI ID and this one for gmail id I have been having on the list ;) I have been struggling the past few days trying to reduce the size of U-Boot (other than OMAP code) to less than 20K. this'd include a simple parser, the very minimal config. Drat! the amount of libraries being packed in was around 53K in size.. I do know that TI's compiler TMS470 is intelligent in not linking stuff which are unused.. after a fair amount of digging, did finally hit the gcc flags. now the bad part.. it kicked out my init functions! drat.. finally tracked it down to the lds KEEP() wrapper. so while i work on OMAP patches at office, I started peeking at Sandbox at home.. and well.. make C=2 does in fact throw tons of warnings-> will look at it if no one is interested in fixing them....

OMAP34xx TRM online!!

Mebbe I am seeing this late.. searching for something else.. hit this link: http://focus.ti.com/general/docs/wtbu/wtbudocumentcenter.tsp?templateId=6123&navigationId=12667 then I see this: OMAP34xx Wireless Technical Reference Manual (swpu114g.pdf, 47 MB) 03 Apr 2008 Download

Dreamer Dream on....

Imagine spending time b/w 11pm and 3 am dreaming about embedded computing (as opposed to mobile computing) - technology and hardware is available today I was given a http://beagleboard.org/ and am now spending time dreaming about using the tiny computing powerpack and unable to sleep.. kinda wierd.. but then.. imagine this: linux+android(?) running over s-video on a http://www.i-glassesstore.com/ and a headset to give commands, my GPS +USB wlan+ webcam plugged over USB - if i can get http://cmusphinx.sourceforge.net/html/cmusphinx.php to work on omap3430, the possibilities are awesome... no more cellphones! i can even think of stereoscopic vision(using the additional dvi output). pure open source and free - covering sight, hearing (I cant do much about touch,smell and taste ;) ). but that should account for a pseudo virtual-real world embedded human-machine combination.. i guess i am truely rambling on.. but i am going to give it a shot and see how far i can get..

caramba! back to uboot-v2

Just started off with uboot-v2 port on my "unamed" board. My objectives: a) get uboot build to work from SRAM with basic uart support, probably usb later on if i can port the gadget driver from linux kernel. b) configure clocks and get SDRAM up and running. c) attempt kernel bootup - now, this i expect to be a pain... d) support nand e) support nor, and get support for SDP (low in personal priority currently - but should be a no-brainer hopefully). Schedule is going to go thru one file a day(or atleast a week depending on my "office work" load).. Today is going to be start.s lets see if we can get a concensus or flame war on the list.. this is critical as most boards share the same code.. as long as it is V4 ISA, things should be fine.. I would not dream of thumb in this peice of code.. by the way, Sascha Hauer is the custodian for uboot-v2 as I was told on the uboot irc.

USB peripheral boot support on a Linux PC

Folks who have CSST know the capability of OMAP doing something known as a peripheral boot mode support over USB and UART. on Linux, well.. looks like no one(at least to my knowledge) has done the same thing.. So, today, in the middle of cooking some kadai chicken and some chicken kebobs, i played around and got thru to give a proof of concept code( http://www.geocities.com/crecmca98/Linux/omap_linux_peripheral_boot.tgz ): 1) “Hacking” to get the vendor id and product id: I dont own a Catc or a usb monitor.. so just plugged in the board to my laptop and dumped the syslog ;) $ cat /var/log/syslog Mar 16 15:26:23 coyote NetworkManager: [1205699183.236191] nm_hal_device_added(): New device added (hal udi is '/org/freedesktop/Hal/devices/usb_device_451_d009_N/A'). Voila!! 3430 is nothin but, VendorId = 0x0451 DeviceID = 0xD009 2) Trigger an external program to download image: Would you believe it, last time i was working in the kernel, hotplug was still working.. i...

next cheap omap board...??

keep a watch... next story on the cheap omap boards... ?? - the page is still in progress.. i'd keep a watch on the rss

Anderson has put up daily OMAP build logs

http://opensource.indt.org/omapbuilds/ -> this is good thing.. something finally to give a bird's eye view of things.. mebbe a tiny perl script will manage to do a daily bootlog.. gotta figure that one out..

Android Waves!!!! OMAP is on Rock and Roll!!!

For the folks watching out news, here is a news: http://www.regdeveloper.co.uk/2008/02/12/wind_river_montavista_mobile_linux/ a bit funny watching all folks fight over things.. Interesting response from Symbian: http://www.theregister.co.uk/2008/02/12/symbian_financials_and_google_challenge/ Also see the competition from Qualcomm and NEC boards: http://blog.wired.com/gadgets/2008/02/hands-on-with-g.html The interesting part is that SDP3430 looks hellua lot better that these.. Brain, Brawn and Beauty = SDP?? Anyways, sneaky open labrador... in org.. mebbe it is not time for me to announce, but keep watching TI's offerings for Developers like you and me.. finally boards we can afford, and pretty cool ones too :) On other news, Android fever, see some interesting snaps: http://www.news.com/2300-1041_3-6229980.html?tag=ne.gall.latest The interesting part is TI is showing off OMAP3430 and 850 based Android demos. the link http://www.pcworld.com/article/id,142369-p...

Died in a OMAP Accident

I will be un-shamed of increasing my blog hit, but then what the heck: Following http://imgs.xkcd.com/comics/dangers.png here are the stuff that died: Many Silicons - cause - Money Many drivers 'nd patches - cause - bad coding U-boot OMAP3430 support - cause - errr.... Me - cause... Laziness :D

Fat or Thin App processor?

Here is what a friend of mine Jayan John has to say (reposted with permission) on a discussion on various processor variants today in Cellphone business. The relevant debate may not be “standalone baseband processors” vs”SOC", but whether or not SOC is the best option... Why ? Quote: “Convergence in the industry of computing capabilities and communication protocols has resulted in the development of devices with enhanced functionalities and capabilities. Providing a range of functions at a low cost while maintaining the reliability and compatibility of existing systems and devices is a major challenge today. As devices become more complex with numerous features, it is of prime importance to find out ways to extract more power from the batteries". With this in mind, choosing the right level of integration is a difficult decision. To make this interesting… Read Texas Instruments vs Philips back in 2005 ( http://www.eetimes.com/news/latest/showArticle.jhtml?articleID=159901628 ...

broadcom seems to have some coverage..

Here are some interesting news articles in recent days: Appilcation processors are dead ? http://www.linuxdevices.com/news/NS9250186181.html -> that'd be painful... ;) Broadcom : http://www.news.com/8301-10784_3-9797486-7.html?part=rss&subj=news&tag=2547-1_3-0-5 Cnet has some details though not radical http://www.linuxdevices.com/news/NS8838596703.html - that is some indepth info.. Should the world tremble? Colored printk : http://kerneltrap.org/Linux/Colored_printk_Output i like jazzy stuff.. mebbe i will steal this for uboot v2??...

uboot 2 for omap in development..

So, I am on a slow roll on uboot2 changes for OMAP.. uboot 2 is lot less mature as it can be seen digging into the code, but it is most promising. The main reason I want to jump on uboot2 is that omap support is very nascent here, and lots can be done.. Some areas of concern: * i2c seems pretty unclear * I like the dev concept, but should modules of OMAP be also dev based? I dont think so.. generic modules - yes..i2c etc.. * on dev -> it looks very immature considering that include/driver.h has: 45 struct driver_d { 55 ssize_t (*erase) (struct device_d*, size_t count, unsigned long offset); 56 int (*protect)(struct device_d*, size_t count, unsigned long offset, int prot); 59 void (*info) (struct device_d *); Errrr... erase,protect,info ?? that is flash type device struct rt? it does not fit into a generic driver structure.. * I dont like the fact that there is still a config.h (include/configs/xyz.h SYMLINKed to include/config.h) which makes NO sense to me.. on...