Tag Archives: ARM

Mesa-Video: 800×600 digital video for Arduinos over 2-wire serial Mesa-Bus

via Dangerous Prototypes


kevinhub88 writes:

This post describes Mesa-Video, a low cost, low power, small size and fully Open Source Hardware and Software solution for providing 800×600 digital video for Arduino ( and other ) microcontrollers.  Mesa-Video makes it quick and easy to display text and 24bit color graphics from any MCU using a single UART serial port pin. Applications for Mesa-Video are embedded projects requiring video output and embedded developers wanting real time visibility into their system operation. Mesa-Video is the 1st of multiple Mesa-Modules planned.

More details at Black Mesa Labs site.

Raspberry Pi garage door controller

via Dangerous Prototypes


As a follow up to yesterday’s Raspberry Pi and ARM uC Breakout + DirtyPCBs mini-review post,  hipfan75 has posted the completed Raspberry Pi-based Garage Door controller project:

Right now, all of the sensors and actuators are connected to Raspberry Pi GPIOs. At some point I may move them to the STM32.
I have disabled I2C on the PI and use the SDA/SCL pins as GPIO, reusing the external pull-up resistors on those lines for my sensor pullups. (Sensors are active-low)
GPIO 17, 27, 22, 23 (outputs) are used for the light and door toggles for the two garage doors.

Project info at hipfan75 imgur.   Reddit discussion here.


A GUI and CLI utility for EFM32’s UART bootloader

via Dangerous Prototypes


Mario writes:

I’ve been doing mostly sensor-based systems and I think these microcontrollers are the perfect fit. ARM Cortex (they go from M0 to M4, and their series seem to keep growing), an architecture that was specially designed for low-power sensor-based embedded systems, allowing to measure “stuff” while the CPU is stopped, a nice set of peripherals (OPAMP, 12bit DAC and ADC), great support for GCC ARM Embedded (which makes them really ease to use or getting started to) and a factory-programmed UART bootloader.
The bootloader uses XMODEM-CRC protocol and TeraTerm may be used for uploading. However if you want a command-line tool (like “avrdude” for AVR microcontrollers), there’s anything you can use. So, I built one.

Source code is on Github.

Via the forum.

Project details at Mário Ribeiro’s blog.

Tiva C launchpad FFT with real time plotting using pyQtGraph

via Dangerous Prototypes


Shane of Wattnotions writes:

The biased signal generator signal is connected to AnalogIn 1 on the Tiva C which is pin PE_2. Signal Gen and Tiva C ground is common. The two 10k resistors from a voltage divider which will halve the 3v input to give a 1.5 v bias…

See code at Wattnotions page.

Check out the video after the break.

tinyK20: New board with micro-SD card

via Dangerous Prototypes


Erich of MCU on Eclipse has posted an update on his open source tinyK20 project. We wrote about it previously:

Changes from the earlier version (see “tinyK20 Open Source ARM Debug/Universal Board – First Prototypes“):
1.Replaced the K20 crystal with one having a smaller footprint.
2.Added Micro SD card socket on the back (same socket as on the FRDM-K64F or FRDM-K22F).
3.Because SD cards can draw more than the 120 mA the K20 internal 3.3V provided, there is a footprint on the backside of the board to add an extra DC-DC converter.
4.Moved reset button and headers.
5.First version with transparent enclosure.

Raspberry Pi – Where to start?

via Wolf Paulus » Embedded

At its core, the Raspberry Pi uses the Broadcom BCM2835 System-on-a-chip. This single chip contains

  • an ARM1176 CPU (normally clocked at 700MHz)
  • a VideoCore 4 GPU, i.e. a low-power mobile multimedia processor (also used in the Roku-2)
  • 256 MByte SDRAM
  • in addition to the ARM’s MMU, a second coarse-grained Memory Management Unit for mapping ARM physical addresses onto system bus addresses.

The memory needs to be divided into ARM and GPU memory (happens by including one of the supplied start*.elf files into the boot partition). The minimum amount of memory which can be given to the GPU is 32MB. However that will restrict the multimedia performance and 32MB does not provide enough buffering for the GPU to do 1080p30 video decoding.

The second, slightly smaller chip on the Raspberry Pi board, is an LAN9512, an USB 2.0 hub and 10/100 MBit Ethernet controllers. The LAN9512 is a low-cost, power-efficient, small-footprint USB to Ethernet and multi-port USB connectivity solution in a single package, contains a Hi-Speed USB 2.0 hub with two fully-integrated downstream USB 2.0 PHYs, an integrated upstream USB 2.0 PHY, a 10/100 Ethernet MAC/PHY controller, and an EEPROM controller.

Single-Chip, Hi-Speed USB 2.0 Hub and High-Performance 10/100 Ethernet Controllers

Boot Process

Besides the hardware board itself, starting with the boot process seems to be as good an idea as any… When the Raspberry Pi powers up, it’s the GPU that is active, looking for bootcode.bin, loader.bin, start.elf at the root dir of the first partition at the (fat formatted) SDCard. I.e., booting is hardcoded to happen from the SDCard.
The GPU reads and executes bootcode.bin, which then loads loader.bin, which loads start.elf.
Again in the root dir of the first partition it looks for config.txt, contains information like the arm speed (defaults to 700MHz), address from where to load kernel.img, etc.
Now it kernel.img (arm boot binary file) is copied it to memory and the ARM11 is reset that it runs from the address where kernel.img (default kernel_address 0×8000) was loaded.

Memory Split

The memory needs to be divided into ARM and GPU memory and currently, we have three start.elf files to choose from (see below for details).

  • arm128_start.elf: 1:1, 128MBytes for the ARM11 and 128MBytes for the GPU
  • arm192_start.elf: 3:1, 192MBytes for the ARM11 and 64MBytes for the GPU
  • arm224_start.elf: 7:1, 224MBytes for the ARM11 and 32MBytes for the GPU

Broadcom states in their BCM2835 documentation that 32MBytes might not be enough memory for the GPU and until you reach the point where 128MByte aren’t quite enough for the ARM, you may want to go with the 1:1 spit.

Minimal Boot Image and Blinky Program

Let’s put this Boot Process assumptions that were made above to the test.

  • Prepare an SDCard card (a 1 GByte Class-2 cards works just fine) by formatting it with the MS-DOS (FAT) file system.
  • Download a Raspberry Pi Distribution (currently wheezy-raspbian vers.2012-07-15), uncompress the zip file and open the resulting image file 2012-07-15-wheezy-raspbian.img, for instance with DiskImageMounter, if you are using Mac OS X.
  • Copy bootcode.bin form the wheezy-raspbian.img to the root directory of the SDCard.
  • Copy loader.bin form the wheezy-raspbian.img to the root directory of the SDCard.
  • Copy arm128_start.elf form the wheezy-raspbian.img to the root directory of the SDCard and rename it to start.elf.
  • Copy config.txt form the wheezy-raspbian.img to the root directory of the SDCard.
  • Add the following two lines to your config.txt:
    kernel blinky.bin
    kernel_address 0×8000
  • Uncompress and copy blinky.bin to the root directory of the SDCard.

Now insert the SDCard into your Raspberry Pi and power it up. If all goes well, you should see the Raspberry Pi’s OK LED blink.
The five files, which total just over 2MBytes are probably the closest and smallest you can get to an Hello_World style program for the Raspberry Pi.

Stay tuned for how to create your own Raspberry Pi Tool Chain and how to make blinky.