xilinx
TRANSCRIPT
1. Review
1.1. Target board
1.2. Target board The target board has the following block diagram
FPGA
RAM
FLASH SPI
FLASH BPI
RS232_PC
RS232_ST
JTAG_FPGA
TS_INTS_OUT
DVB-T Mod
• FPGA: Spartan 3A FPGA family (3A400). It will be configured with an internal MicroBlaze processor with uClinux embedded
• DVB-T Mod: OFDM modulator • RAM: 64Mbit RAM • FLASH BPI: Parallel Flash used for bitstream, bootloader, uClinux and SW
application • FLASH SPI: Serial Flash not used • RS232_PC: Uart used for PC terminal • RS232_ST: Uart used for communication with ST5518 processor • JTAG_FPGA: JTAG used for download/debug data to FPGA and for writing
code to FLASH_BPI • JTAG_SPI: JTAG used for download data to SPI • TS_IN: Input transport stream • TS_OUT: Output transport stream
The FPGA has to be configured internally with the following HW structure:
Uart_Mod
Uart_PC
Uart_ST
Timer
Clock Watchdog
Interrupt
uBlaze
TS switch
GPIO
RAM controller
SPI controller
BPI controller
1.3. SW platform The FPGA must be configured in HW as a Microprocessor downloading the code as a bitstream. Inside the bitstream there’s the bootloader code, which will perform the boot from Flash Memory. The boot loads the uClinux and executes it. After OS booting, the SW application is launched and the board is ready to work.
FPGA
Bitstream
Bootloader
uClinux
Application SW
The boot process is the following:
• After power on the board the FPGA starts downloading the bitstream from the BPI memory (selected by the M0, M1 and M2 switches)
• The bitstream contains both the Microblaze configuration and the first application that starts automatically (the application is compiled in BRAMs bits inside the FPGA structure). The bootloader points to uClinux image in Flash BPI memory and copies all the kernel and ROM filesystem into the RAM.
• After they are copied into the RAM, the bootloader starts executing the lernel from RAM.
• The kernel mounts the ROMFS into RAM and it is configured with a start SW application.
• After kernel starts executes automatically the SW application.
2. Required HW
2.1. PC requirements
• USB 2.0 port • RS232 port • 2 GB RAM
2.2. Tools
• Xilinx Platform Cable USB II
3. Required SW
• ISE webpack 10.1 (ISE, EDK, iMPACT) • Vmware Workstation 6.5
4. SW installation
4.1. TBD 4.2. TBD
5. XPS setup
5.1. TBD 5.2. TBD
6. Project creation
6.1. Generating a new project
• Open a XPS and select “file->new project” • Chose “Base System Builder wizard”
Set the folder path
• Set the clock frequency, the bus frequency (the FPGA can generate any bus frequency from any reference clock due to internal DCMs). Select the On-chip H/W debug module” for development. Set the BRAM to 8K and enable cache setup
• Add a “Geenric_External_Memory” controller (XPS_MCH_EMC). Set the Memory size to 8Mb, 8-bit data width and asynchronous type
• Add a “RS232” controller (XPS_UARTLITE). Set the baud rate to 115200, 8bits, no parity and use interrupt (for PC terminal)
• Add a “RS232” controller (XPS_UARTLITE). Set the baud rate to 9600, 8bits, no parity and use interrupt (for ST communication)
• Add a “RS232” controller (XPS_UARTLITE). Set the baud rate to 115200, 8bits, no parity and use interrupt (for Modulator communication)
• Set the cache setup at 4KB for both ICache (instruction cache) and DCache (data cache) and map them on Generic_External:Memory (SRAM)
• Set the STDIN and STDOUT (PC terminal) to RS232, and the boot memory to ilmb_cntlr.
6.3. Generating BSP files
Go to “project Project Options
And set the “Project Peripheral Repository” in “Device and Repository” tag to “../edk_user_repository”
Go to “Software Software Platform Settings”
At “Software Platform” set “OS:petalinux” and set the CORE_CLOCK_FREQ_HZ at 62500000
At “OS and libraries” set the “lmb_memory” at dlmb_cntrl
And “main_memory” at SRAM, “stdin” and “stdout” at Uart_PC
Click at “Software Generate Libraries and BSPs”
And the platform will generate the needed file for generating embedded linux. File generated is <Project folder>\microblaze_0\libsrc\petalinux_v1_00_b\Kconfig.auto Click at “Software Build all user applications”
And “memory test” application will be compiled. Click to “Update Bitstream” and application will be added to bitstream at <Project folder>\implementation\download.bit 7. VMware
7.1. asdasd 7.2. dasda
8. Virtual Machine setup
8.1. Configuring virtual machine
8.1.1. Hardware configuration The Virtual Machine should be configured with the following HW:
• Memory 512Mb (minimum) • Hard Disc SCSI or IDE (preferred) with 12Gb minimum. No pre-allocation
needed. Split in 2Gb files • DVD (IDE) • Network adapter. Bridged mode and connected at power on • USB controller • Processor (1 minimum)
8.2. Installing Ununtu 8.2.1. Downloading
Download Ubuntu 9.04 desktop edition from http://www.ubuntu.com/ and save the ISO image into the host PC
8.2.2. Installing and setting up Install desktop with standard options. Set the user “xilinx” and give administrative rights to it.
• Setting up the network The network must be configured manually at the address 192.168.20.55
• Setting up the NFS server Download the NFS server from APT using: # apt-get install nfs-kernel-server nfs-common Edit the “/etc/exports” file, adding: /home/xilinx/petalinux-v0.40-rc3 192.168.20.1/24(rw,no_root_squash,sync,no_subtree_check)
And export the filesystem using: # exportfs –a NOTE: Since the “petalinux-v0.40-rc3 folder still don’t exists, it won’t work until we install the petalinux. See next step
8.3. Downloading and installing Petalinux
8.3.1. Downloading
Download latest version of Petalinux from http://developer.petalogix.com/ (tested with petalinux-v0.40-rc3)
8.3.2. Installing Copy the “petalinux-v0.40-rc3tar.gz” file into the ~/home/Xilinx folder. Uncompress it using: # tar –zxvf petalinux-v0.40-rc3.tar.gz
9. Generating Linux
9.1. Environment Open a bash shell from user’s home folder. There must be a folder named “petalinux-v0.40-rc3”. Type “cd petalinux-v0.40-rc3” and “source settings.sh” to set the environment variables. All shells opened to perform any instruction with petalinux must be started with the environment variables
9.2. Setting up the HW platform From the bash shell, type “petalinux-new-platform –v Engel –k 2.6 –p Spartan3A400-rev00”. Scripts will generate folders with the platform information
9.3. Configuring kernel settings
Go to “~/petalinux-v0.40-rc3/software/petalinux-dist”. “Type menu xconfig” and start the following configuration:
9.5. Compiling After saving the configuration, type “make all” in the bash shell. It must compile all the the kernel with the selected options and it will generate both ROM filesystem and Kernel Image.
9.6. Folder trees The following folders are generated with the following information (all included in ~/petalinux-v0.40-rc3/software/petalinux-dist):
• Folder bin/ o image.bin kernel + filesystem to be downloaded to target
(recommended) o image.elf kernel + filesystem in elf format o linux.bin kernel binary (can be alternate loaded with romfs image
instead image.bin) o romfs.img romfs image (can be alternate loaded with kernel binary
instead image.bin) • Folder romfs/
This folder contains all original filesystem (compressed into romfs.img and inage.bin). It has the usual System V structure
o bin/ binary files o dev/ devices nodes o etc/ configuration and init files o and so on.....
9.7. Suitable configurations The “make all” instruction executed previously generates the kernel according the configuration options, generates also the romfs and the images. If any configuration from rom filesystem file must be modified manually, after doing it so it’s needed generating again the image file. So from “~/petalinux-v0.40-rc3/software/petalinux-dist” folder type “make image”. From current romfs folder it will generate all the images. If needed generating again the romfs without compiling again the kernel, the user could perform “make romfs” from “~/petalinux-v0.40-rc3/software/petalinux-dist”. After this romfs generation, it must be generated again the image with “make image”
10. Running Linux from RAM
10.1. Conection
• RS232
• Platform Cable USB II
10.2. Folders and files
• Project files and tools
Copy the compiled image.bin file from Ubuntu folder “~/petalinux-v0.40-rc3/software/petalinux-dist/images” to the “c:\work\EDK\xxxx” project folder The “c:\work\EDK\xxxx” project folder must contain at least the updated XPS project, updated SW and bitstream (“c:\work\EDK\xxxx\implementation\download.bit”) There must be the file “c:\work\EDK\xxxx\etc\download.cmd” with the following commands:
There must be the file “c:\work\EDK\Misc\xmd_pl.bat” with the following commands:
10.3. Downloading Open a Hyperterminal session, with 115200, 8, N, 1. Open a cmd window. Go to project “cd \work\EDK\xxxx” and type “..\Misc\xmd_pl.bat” The batch will start first downloading the microblaze “download.bit” from the current project:
After downloading the microblaze (needed to load the debugger module) the batch downloads the kernel image and the rom filesystem (linux.bin)
After the download, the batch will exit and the linux is started on target. We can see it through the RS232 hyperterminal session:
10.4. Executing
Now the linux is loaded ito SRAM. Through the Hyperterminal we can work normally with the target. First we must enter the user (root) and password (root)
11. Booting and running Linux from Flash BPI
11.1. Requirements In the project folder there must be the following files and folders:
• BPI_bootloader folder:
• FLASH_BURN folder
• Pllinux_images folder (no files needed)
11.2. Downloading the Bitstream
With the current application (without any bootlooader) download the microblaze core to the board
11.3. Adding the bootloader application In the XPS Project, select the Applications tab and double-click on Add software Application
Enter BPI_Bootloader in the Project name
Add the project source code double-clicking in Sources
Use the browser to add the “bootload.c” and “SF_commands.c” files
Modifying bootloader Edit “bootloader.c” file. Go to following constants and modify the KDI_LENGTH according “image.bin” file length
To do so, go to the “image.bin” file, click on properties and check the size
In this case, the size is 3481780, so 0x3520B4
11.4. Building the application Unmark the “TestApp_Memory” application for BRAM inizialization
Select “Software->Software Platform Settings”. Set “standalone” in Software platform tag.
Set “RS232_Uart_1” in “stdin” and “stdout”, OS and Libraries tag
Run “Software-> Build All User Applications”
And “Device Configuration -> Update Bitstream”
Now all bitstream with bootloader and image are ready to be flashed.
11.5. Flashing the bitstream and the bootloader
First step is translating the “download.bit” file into a binary file. The “..\FLASH_BURN\make_bpi_up.bat” is a batch designed for this application. In a DOS window, run the application. It will generate the “..\pllinux_images\ bootloader_petalinux.bin” file Select the “bootloader_petalinux.bin” file from project implementation folder. Select the “Flash_BPI” instance name and set the Program offset to 0x00000000
Now the bitstream and the bootloader application are located in 0x00000000 address in the Flash BPI memory.
11.6. Flashing the linux image
Select the “image.bin” file from project folder. Select the “Flash_BPI” instance name and set the Programm offset to 0x00100000
Now the image application are located in 0x00100000 address in the Flash BPI memory.