Long time has passed since I wrote a post. This is how the things are going when you don’t have time at all – but still I’m proud to announce that there has been published an article in polish electronics related magazine „Elektronika Praktyczna” about Sarge SBC and running linux on it.
Filed under: Electronics | Komentowanie nie jest możliwe
Our current work is focus on the Sarge Extension Board design. The board will contain few additional periferials like I2S sound DAC and CompactFlash connector and these will allow us to extend our capabilities in the embedded system field.
One of my possible customer asked if I can run mono on the Sarge SBC, so I’ve decided to bitbake one
using the latest oe recipe. After creating mono-1.2.4 packages for sarge-at91 machine it turned out that not everything is working fine:
root@sarge_at91:/usr/local/mono$ mcs example1.cs
Unhandled Exception: System.TypeInitializationException: An exception was thrown by the type initializer for Mono.CSharp.Location —> System.ExecutionEngL
at System.Collections.Hashtable..ctor (Int32 capacity, Single loadFactor, IHashCodeProvider hcp, IComparer comparer) [0x00000]
at System.Collections.Hashtable..ctor (Int32 capacity, Single loadFactor) [0x00000]
at System.Collections.Hashtable..ctor () [0x00000]
at Mono.CSharp.Location..cctor () [0x00000] — End of inner exception stack trace —
since I’m not familiar with mono: any ideas, anyone ?.
There are dozens of chips using I2C (Inter-IC bus) bus. The AT91RM9200 chip used
in The Sarge SBC project has embedded I2C master controller. Initially I’ve experienced some problems using the bus, but it was hardware/design problem. Now the I2C is fully functional and can be used very easly under linux with applications like lm-sensors. Adding various chips we can read the temperature, pressure, humidity, time etc.
Just for test I have connected DS1621 chip to the board and was able to read the temperature.
Running kernel 2.6.21 wasn’t just a matter of compiling newer release (previously I’ve used 2.6.17).
The MMC core and AT91 driver was a bit rearranged since 2.6.17 and booting from the SD card wasn’t possible.
Luckily I’ve found patches from ECB_AT91 project and after some changes it worked for Sarge. It can be downloaded from the download section.
Using DDD debugger with OpenOCD and JTAG interface I’ve found why
the linux kernel was not booting. It was some missaligments caused by wrong gcc 4.1.1 compilation
in CPU initlization routines located in u-boot and loader code – you should use gcc-3.4.6 (or less) for loader and u-boot if you want to avoid problems.