world leader in high performance signal processing
Trace: » 2006r1

Release Notes for uClinux for Blackfin Version 2006R1

Version: 2006R1

Date: May. 23, 2006

The latest version of this document can always be found here:

Development Environments

Tool Chain: Toolchain Release 2006R1

u-boot: uboot_1.1.3 Release 2006R1

Host platform: SuSE Linux 9.2 or above

Target board: STAMP & EZKIT Board

Note: However, other similar host platforms are also supported, but they are not well tested by now.


Source files


Linux ELF file


Compressed Linux image


This document


Compressed archive of test results


Summary of test results


Fixes in release 2006R1


  1. Build many new pieces of hardware.
    • SL811HS and ISP1362 USB daughter board. U socket.
    • SHARP TFT LCD daughter board. PPI socket.
    • AD73311L daughter board. SPORT socket.
    • AD7142 joy stick daughter board. I2C socket.
    • BF537 UART1 daughter board. UART socket.
    • I2C extender. I2C socket.
    • keypad extender.
    • Char LCD extender.
  2. Fix a lot of code issues under kernel Blackfin arch folder according to the requirement from LKML.
    • Change C code style according to the kernel rules.
    • Move all extern definition into a global head file.
    • Rewrite put_reg()/get_reg() and add put_user()/get_user().
    • Change some functions to static.
  3. Improve kernel.
    • Upgrade kernel to
    • Enable uClinux to be compiled under gcc 4.1. Change code in kernel and busybox.
    • Add timer event into oprofiler.
    • Allow 10, 4, and 1ms timer ticks for Blackfin.
    • Enable kgdb patch to support kernel debugging over UART1.
    • Update KGDB patch to kernel 2.6.16.
  4. Add new drivers
    • Add TFT LCD driver.
    • Enable SL811HS USB Host/Device driver.
    • Add ISP1362 USB host driver.
    • Add Net2272 USB device driver.
    • Port can4linux driver.
    • Add Michele's PF button driver / test application for input subsystem.
    • Add driver for AD73311L sound card.
    • Add AD5252 digital potentiometer driver to control the backlight and contrast for LCD Display.
    • Add TWI keypad driver.
    • Add TWI LCD driver.
  5. Improve exist drivers
    • Enable serial mouse and console driver on BF537 UART1.
    • Implement SMBus type transfer entrypoint in the TWI I2C driver.
    • Update PPI driver to support BF537.
    • Common SPI driver for Blackfin under kernel SPI framework and remove old spi channel driver.
    • Update SPI ADC/DAC driver, SPI flash driver and AD1836 driver to work with new SPI framework.
    • Enable ad7171 video frame buffer driver on both bf537 and bf533 in both NTSC and PAL mode. Optimize the performance to convert RGB to YUV by assembly code and better algorithm.
    • Update BluetechnixCM-BF533 board patch.
    • Improve BFIN MAC network performance for bf537.
  6. Enable ELF binary and dynamic object library.
    • Enable kernel to load elf binary and dynamic object library.
    • Implement different signals for Elf binary.
    • Change uClibc to do proper self-relocation for ELF binary.
  7. Enable graphic environment
    • Enable Microwin 0.91 for Blackfin.
    • Enable QT embedded library free 3.3.5 for black in.
    • Enable graphic web browser Konqueror3 embedded 0.2 for Blackfin.
  8. Port Java virtual machine Kaffe to Blackfin. Only interpret mode works by now.
  9. Add YAFFS utility.
  10. Add bluetooth utilities.
  11. Add input event test suite from Vojtech.
  12. Add https web server pound.
  13. Enable more LTP test cases for Blackfin. Update to April release of LTP.
  14. Enable real time extension for linux “ADEOS” on Blackfin.
  15. Port some functions from VDSP library.
  16. Update NDSO and AWG to work with new SPI ADC/DAC driver.
  17. Add a simple jpeg viewer application.
  18. Enable SDL library on Blackfin.

Known Issues

A full list of known issues can be found at:

No Issue Title
1121 sem_timedwait returns incorrect error code
1122 A cloned process won't continue to execute after it creates a child pthread.
1137 ./linux-2.6.x/ does not match target /proc/kallsyms
1146 a couple of the libraries don't compile.
1165 CVS 2.6.16 kernel networking fails after 2 hours of downloading on 533
1186 Sometimes CTRL+C kills shell
1188 CONFIG_PACKET_MMAP failed to build

There are also some issues in the LTP test cases. They are recorded as bug 352, 744, 745, 1010, 1050, 1096, 1211, 1212, 1218, 1219 and 1263.

Build Procedure

1. Install Toolchain Release 2006R1

Go to for more information

2. Download the source code of project uClinux for Blackfin release 2006R1

Go to

3. Uncompress to working directory

cp /(WORK_DIR)
cd /(WORK_DIR)
tar -xvf uClinux-dist_2006R1.tar

4. Compile the source using following commands

cd uClinux-dist
make clean 
make menuconfig (save and exit without making any changes)

5. Find the compiled Blackfin executable linux in the following location


6. Above file shall be used to download to the target board.

Load Kernel to Target Board

1. Use below serial cables to connect board to host computer.

Male-Female 1-1 serial cable

2. Use minicom or some other serial communications utility to configure the serial port with the following parameters. If run minicom for the first time, run “minicom -s” to setup the port.

Serial Device = /dev/ttyS0
Baud Rate = Baud that have been selected in kernel menuconfig (Default value is 57600)
Number of bits = 8
Parity = None
Stop bits = 1

3. Make sure the BMODE pins on the target board are set to 00. If u-boot loads automatically on reset, the pins are already set correctly.

4. Make sure tftp server is installed in the host machine. Copy linux from uClinux-dist/images/ that is built in above steps to the /tftpboot of the host PC.

5. Load the linux file with the following boot loader commands. Make sure the ipaddr (target board IP) and serverip (host IP) are correct.

STAMP> setenv ipaddr x.y.z.n
STAMP> setenv serverip x.y.z.m 
STAMP> saveenv
STAMP> tftp 0x1000000 linux
STAMP> bootelf 0x1000000

Where x.y.z.m is the ip address of the host machine, and x.y.z.n is the ip address of the target board.

6. The kernel should then boot

Adding / upgrading kernel in flash

Building Linux image (compressed and uncompressed)

(This Image Will be Used in bootm command)

Linux ELF image has to be changed as per u-boot standards to load Linux using bootm command. Following subsections explain how to build compressed and uncompressed Linux images.

Building Compressed Linux Image

Compressed Linux images can be found under folder “uClinux-dist/image”. But, you can also generate by yourself as follows.

1. Generate the binary file from the ELF file, using following command

$ bfin-uclinux-objcopy -O binary linux linux.bin 

2. Compress the binary file obtained above, using following command

$ gzip -9 linux.bin  

3. Build the final linux image, using following command

(WORK_DIR)/u-boot_1.1.3/tools/mkimage -A blackfin -O linux -T kernel -C gzip -a 0x1000 
-e 0x1000 -n "Bfin uClinux Kernel" -d linux.bin.gz uImage

Use the utility mkimage present in the u-boot_1.1.3/tools directory to merge the header information like Image Name, Image Type, Data Size, Load Address, Entry Point into the linux.bin.gz.

Building uncompressed Linux image

Use following commands to build uncompressed Linux image

(WORK_DIR)/u-boot_1.1.3tools/mkimage -A blackfin -O linux -T kernel -C none -a 0x1000 -e 0x1000 
-n "Bfin uClinux kernel" -d linux.bin uImage

0x1000 is used because we have compiled the kernel with that location as the entry point. If anyone wants to chose a different address for entry point (for eg, 0x20000), then please give that address instead of 0x1000. Ensure to change the entry point of the kernel.

Programming Flash

STAMP> tftp 0x1000000 uImage
STAMP> protect off all
STAMP> erase 0x20040000 0x203EFFFF
STAMP> cp.b 0x1000000 0x20040000 $(filesize) 
STAMP> setenv bootcmd bootm 0x20040000 
STAMP> save
STAMP> reset

Build Customized uClinux

Customize Kernel

1. make menuconfig in uClinux for Blackfin project

2. select option “Kernel/Library/Defaults Selection” → “Customize Kernel Settings” and exit

3. In kernel configuration, processor and board specific options can be changed in “Processor type and features”, such as cache status, CPU, DMA, etc.

4. Driver specific options are in respective menus. Such as Ethernet driver in “Networking supporting”, sound card driver in “Sound”, video driver in “Graphic Support”, etc.

5. Save and exit. Then make the image again as mentioned before. The changes of the kernel take effects after you load and run the new image.

Customize Application and Lib

1. make menuconfig in uClinux for Blackfin project

2. select Blackfin architecture in menu “Vendor/Product Selection”→“AnalogDevices Product”

3. select option “Kernel/Library/Defaults Selection” → “Customize Vendor/User Settings” and exit

4. In user configuration, applications can be selected to build and debugging information can be enabled.

5. In order to configure uClibc, you should go into the folder “uClibc” and do menuconfig.

6. After the menuconfig is done, make the image again as mentioned before. The new selected application can be found in the romfs after you load and run the new image.

Customize FLAT/ELF Binary Format

1. make menuconfig in uClinux for Blackfin project

2. select Blackfin architecture in menu “Vendor/Product Selection”→“AnalogDevices Product”

3. select “Kernel/Library/Defaults Selection” → “Customize Vendor/User Settings” and exit

4. select “Blackfin Build Options” → “Build FD-PIC ELF binaries” to build application into ELF binary. Unselect to build FLAT binary.

5. Change into folder uClibc and do menuconfig.

6. select “Target Architecture” → “bfin” to build uClibc into ELF binary. Select “Target Architecture” → “bfinfdpic” to build FLAT binary.

7. Change into folder uClinux-dist and make the image.

Customize for debugging

1. To debug an application, please refer to the document “gdb_guide_bfin.txt” in patch folder bfin_patch/kgdb_patch.

2. To do source level kernel debugging by kgdb, please refer to the README file in patch folder bfin_patch/kgdb_patch. After apply the kgdb patch file to the kernel, a simple guide “kgdb_bfin.txt” can be found in subfolder “linux-2.6.x/Documentation/blackfin/”

Reporting Bugs

1. Go to the following Blackfin uClinux bug tracker page,

2. If the bug is not already reported click on “Submit New” button to report new bug.