Embedded Linux Development Guide
|
|
|
- Pamela Rose
- 10 years ago
- Views:
Transcription
1 Embedded Linux Development Guide Revision: January 14, NE Henley Court, Suite 3 Pullman, WA (509) Voice (509) Fax This Embedded Linux Development Guide will provide some preliminary knowledge on how to build Linux for Digilent boards based on the Zynq-7000 TM All-Programmable System-on-Chip (ZYNQ AP SoC) to suit your customized hardware designs. This guide takes a bottom-up approach by starting from a hardware design on the ZYNQ AP SoC Board, moving through the necessary preliminary processes, and eventually giving instructions for running and debugging the Linux kernel. Section I: Hardware Customization begins with the Linux Hardware Design Package for ZYNQ AP SoC boards, available on the Digilent Inc. website. This section then illustrates the ZYNQ AP SoC basic architecture and explains how to create customized hardware using Xilinx Platform Studio (XPS) available in the Xilinx ISE Design Suite WebPack. Section II: Device Tree Describe Your Hardware to the Linux Kernel examines how the Linux kernel gathers information about the customized hardware. Section II takes a closer look at a data structure called the Device Tree Blob (DTB), explains how to write a Device Tree Source (DTS) file, and how to compile the source into a DTB file. Section III: U-Boot The Embedded Boot Loader introduces U-Boot, a popular boot loader for Linux used by many embedded systems. Section III presents preliminary knowledge about how to configure and build U-Boot, and provides an introduction of some commonly used U-Boot commands. After explaining all the prerequisites for running The Linux kernel (boot loaders, device trees, etc.), the guide moves to configuring the Linux kernel in Section IV: Linux Kernel Configuration. This section demonstrates customizable features useful for custom hardware design. This section also provides information for building and customizing the kernel, file system customization, and finally running the Linux kernel on ZYNQ AP SoC based boards. During the compilation and running of The Linux kernel on your customized hardware, there is a chance that the kernel will panic and generate an Oops message or completely cease functioning. The Appendix: How to Debug the Linux Kernel introduces you to some simple debugging techniques to follow when errors occur with the Linux kernel. Before creating custom hardware or using the Linux kernel, Digilent Inc. recommends that users have some experience with embedded Linux development on other embedded systems or they have read the Getting Started with Embedded Linux guide for their platform. Moreover, users can read this documentation along with the Embedded Linux Hands-on Tutorial for their specific Zynq AP SoC board. These documents are available on the Digilent Website, Embedded Linux page and the webpage for your product. page 1 of 23
2 Section I: Hardware Customization Before creating your customized hardware, we suggest you start with the Linux Hardware Design Project available on your board s Digilent product webpage. The reference design includes the proper configuration for most of the peripheral devices available on-board your product including the interrupt controller, timer, clock generator, AXI interconnects, etc. that are all essential for Linux to operate properly. Processing System UART1 GPIO SD0 USB0 Application Processor Unit SWDT TTC SLCR MMU NEON/FPU Engine 32KB I Cache GIC Cortex-A9 MPCore CPU 32KB D Cache OCM Interconnect MMU NEON/FPU Engine 32KB I Cache Snoop Control Unit Cortex-A9 MPCore CPU 32KB D Cache 512KB L2 Cache & Controller 256KB OCM BootROM Enet0 QSPI Central Interconnect PL to Memory Interconnect DDR2/3 Memory Controller 512 MB DDR3 Axi Interconnect 1 AXI Interconnect 0 (AXI_LITE) Clock generator AXI DMA AXI DMA Axi Interconnect 2 AXI VDMA Axi_clkgen Axi_gpio (ADAU1761) Axi_i2s_adi (ADAU1761) Axi_iic (ADAU1761) Axi_spdif_tx (ADV7511) Axi_hdmi_tx_16b (ADV7511) Axi_iic (ADV7511) Programmable Logic Figure 1. System Architecture of Linux Hardware Design Project for ZedBoard page 2 of 23
3 The Linux Hardware Design Project posted on the Digilent website usually contains the hardware controllers for all of your product peripheral devices and the GPIO for extension pins (e.g. Pmods, VHDC, FMC, etc.) Before you begin hardware customization, please read the documentation inside the Linux Hardware Design for your product, which explains the hardware in detail, and the Embedded Linux Hands-on Tutorial, which guides you through step by step instructions for making changes to the reference hardware design. First Stage Boot Loader (FSBL) We discuss the First Stage Boot Loader (FSBL) here because of its integral relationship with hardware design. Digilent recommends that you recompile the FSBL every time you make hardware changes. The FSBL will do several simple initialization steps for the Processing System (PS), like setting up a clock generator. It also has board-specific modifications that perform several initialization steps for various on-board devices. For instance, the FSBL for the ZedBoard will toggle the reset pin of USB-OTG to perform a reset before Linux gets loaded. You just need to make a few clicks to generate the FSBL. The project guide within the Linux Hardware Design and hands-on tutorial for your specific board will guide you through it. You can also refer to the ZYNQ Software Developers Guide available on the Xilinx website at page 3 of 23
4 Section II: Device Tree Describe Your Hardware to the Linux Kernel The Linux Kernel is a piece of embedded standalone software running on your hardware. The kernel provides a standardized interface for application programmers to utilize all hardware resources without knowing the details. Thus, the kernel has to know every detail about the hardware it is working on. The Linux Kernel uses the data structure known as Device Tree Blob (DTB) to describe your hardware. Sometimes DTB is called Flat Device Tree (FDT), Device Tree Binary, or simply Device Tree. 1 Section II takes a closer look at the device tree and examines how the Linux kernel interprets and understands your hardware. Device Tree Source (DTS) The Device Tree Source (DTS) file is the source file you use to create the device tree data structure that passes to the kernel during kernel booting. The file is a simple tree structure comprised of nodes and properties. Properties are key-value pairs, and nodes may contain both properties and child nodes. 2 (See Example 1.) Example 1. /dts-v1/; / { model = "Xilinx Zynq ZED"; compatible = "xlnx,zynq-zed"; #address-cells = <0x1>; #size-cells = <0x1>; interrupt-parent = <&gic>; ps7_ddr_0: memory@0 { device_type = "memory"; reg = <0x x >; }; ps7_axi_interconnect_0: axi@0 { #address-cells = <1>; #size-cells = <1>; compatible = "xlnx,ps7-axi-interconnect-1.00.a", "simple-bus"; ranges ; gic: intc@f8f01000 { interrupt-controller; compatible = "arm,cortex-a9-gic"; #interrupt-cells = <3>; reg = < 0xf8f x1000 >, < 0xf8f x0100 >; }; We abstracted the part of the device tree source code in Example 1 from the ZedBoard default device tree source file. In the device tree source file / stands for the root node and everything inside the 1 Hallinan, Christopher. Embedded Linux primer: a practical, real-world approach. Upper Saddle River, NJ: Prentice Hall, page 4 of 23
5 brackets {} are either properties of the root nodes or the children of the root node. In Example 1, the first property of the root node is model. String Xilinx Zynq ZED is assigned to it. Property compatible defines the compatibility of the node, and, in this case, is given the compatibility string xlnx,zynq-zed ; The children of the root nodes include the on-board DDR3 SDRAM, ps7_ddr_0, and the central AXI interconnects for the whole system, ps7_axi_interconnect_0. There are many more children of the root nodes in the default DTS file. The following sub-sections introduce the basic structures of nodes and some of the most common node properties. You can find more detailed information about the device tree under folder Documentation/devicetree/ in the Linux kernel source. Device Nodes Example 2 demonstrates the basic structure of device nodes. Example 2. The Name field is the name you assigned to the device tree node. The name of the node is not required, but should be unique in the whole tree if assigned. You can obtain the phandler of the device node with the notation &(name). The part (Generic Name)@(Base Address)actually forms the full name of the device node. According to conventions, the full name of the device is usually a generic name followed by the base address of the device. The Generic Name field describes the generic class of the device, such as Ethernet, qspi, i2c, etc. The Base Address field gives the base address for the device node. Some devices are virtual devices that do not have a physical memory mapped in the processor memory space. For these devices, The code drops Address) for devices with no mapped physical memory. In Example 3, the leds defined in the DTS file does not have a base address, because it utilizes a bit in the GPIO controller to control an on-board LED. Example 3. (Name) : (Generic Name)@(Base Address) { compatible: (compatibility string) ; reg: < (base address) (size) >; interrupt-parents: < (interrupt controller phandle) >; interrupts: < >; (param1): (string value) ; (param2): < (number value, decimal or hexical) >; }; leds { compatible = "gpio-leds"; }; mmc_led { label = "mmc_led"; gpios = <&gpiops 7 0>; linux,default-trigger = "mmc0"; }; page 5 of 23
6 Properties Properties are key-value pairs. The value of a property can either be a character string (e.g. the value for compatible property), or a list of either decimal or hexadecimal numbers (e.g. the value of reg property). Each node requires a compatible property. A compatibility string will be assigned to that property. You can use it to match device drivers with devices defined in the device tree. In Example 3, the compatible property for device node leds is set to string gpio-leds, which indicates the gpio-leds driver will be used for the device. Usually, the device node name includes the base address of the device. However, the kernel actually obtains the physical address of device registers via the reg property. The value of the reg property contains a list of paired numbers separated by commas. Each pair begins with the base address of the device, followed by the size of the register space. The corresponding kernel driver can usually obtain the physical memory address with the function platform_get_resource and map the physical memory into kernel virtual memory space by functions such as ioremap. If your device has interrupt functionality, you must specify the interrupt number in the interrupt property and set the interrupt-parent property to the phandler of the interrupt controller. You can obtain the phandler of the interrupt controller with &(name field of interrupt controller). For more in depth information on using the Zynq AP SoC interrupt controller with a device tree, see Documentation/devicetree/bindings/arm/gic.txt within the kernel source. OLED DTS Node: An Example We abstract the following codes from the ZedBoard default device tree. 1 Example 4. gpiops: gpio@e000a000 { compatible = "xlnx,ps7-gpio-1.00.a"; #gpio-cells = <2>; reg = <0xe000a000 0x1000>; interrupts = <0x0 0x14 0x0>; interrupt-parent = <&gic>; gpio-controller; }; zed_oled { compatible = "dglnt,pmodoled-gpio"; /* GPIO Pins */ vbat-gpio = <&gpiops 55 0>; vdd-gpio = <&gpiops 56 0>; res-gpio = <&gpiops 57 0>; dc-gpio = <&gpiops 58 0>; /* SPI-GPIOs */ spi-bus-num = <2>; spi-sclk-gpio = <&gpiops 59 0>; spi-sdin-gpio = <&gpiops 60 0>; }; page 6 of 23
7 In Example 4, two devices are declared: the GPIO controller for Processing System of ZYNQ, gpiops, and the on-board OLED display, zed_oled. The device tree names the node for the GPIO controller gpiops, with the generic name of gpio and a base address starting from 0xe000a000, according to conventional naming of the node. The full name of gpiops is gpio@e000a000, as shown in the /sys file system and /proc file system. The compatibility string of the GPIO controller is xlnx,ps7-gpio-1.00.a. The device will use the xlnx-gpiops driver by matching the compatibility string of the node with that defined in the driver source code. The reg property defines the gpiops GPIO controller by a physical address that begins from 0xe000a000 with a size of 0x1000 (64KB). The interrupt is connected to the global interrupt controller gic, as the phandler of gic (&gic in the DTS) passes to the interrupt-parent property. The second node shown in Example 4 is a device 55 VBAT with full name zed_oled. It is for the on-board OLED device on the ZedBoard. In the hardware 56 VDD design, the OLED is connected directly to the 57 RES gpiops GPIO controller (pin 55 to pin 60), as GPIO shown in Figure 2. So, you can implement the driver 58 D/C OLED of the on-board OLED for the ZedBoard by getting the GPIO pin number from the zed_oled device node and toggling the corresponding GPIO pins according to the OLED display transmission SCLK SDIN protocol. As a result, the device zed_oled is not actually a device controller with a physical register Figure 2. OLED Hardware Connection space mapped in memory space, but a virtual device defined so that the driver in the kernel knows which GPIO pins are used. So, there is no base address, no register space, address> part in the full name of the device nodes, and no reg properties in the device tree. The device does have a compatibility string so that the corresponding pmodoled-gpio driver can be registered for the device and toggle the GPIO pins to control the OLED display. There are also several properties that specify which GPIO pins to use. 1 Device Tree Compilation The DTS file needs to be compiled into a DTB file that the kernel can understand. The device tree compiler (DTC), located under scripts/dtc in the Linux kernel source, will compile the DTS file into a DTB file with the command: $./scripts/dtc/dtc -I dts -O dtb -o devicetree.dtb digilent_zed.dts The DTC compiler can also de-compile a DTB file back to the DTS file with the command: $./scripts/dtc/dtc -I dtb -O dts -o digilent_zed.dts devicetree.dtb You can view other options for the DTC compiler with the -h option: 1 Structure gpio-specifier is passed to the properties (e.g. vbat-gpio = <&gpiops 55 0>). Refer to Documentation/devicetree/bindings/gpio/gpio.txt for more details. page 7 of 23
8 $./scripts/dtc/dtc -h Booting With Device Tree The boot loader needs to load the Device Tree into the system memory before starting the kernel. For Zynq based platforms, the boot loader will load the DTB to a fixed memory address 0x It is defined in line 112 of arch/arm/kernel/head.s page 8 of 23
9 Section III: U-Boot Embedded Linux Boot Loader Zynq AP SoC based platforms utilize a multi-stage booting scheme, consisting of BootROM (Stage 0), FSBL and a Second Stage Boot Loader (SSBL) if required. Section I: Hardware Customization discusses the FSBL in more detail. To boot Linux on the ZedBoard, Digilent Inc. recommends U-Boot, a fully supported Second Stage Boot Loader that prepares the basic environment to boot and run the embedded Linux software. Booting Sequence When you power on the Zynq AP SoC based development platform, the Stage 0 Boot Loader, located in BootROM, will start to run. The codes will check the BootMode pins of the Zynq chip to determine from which interface to load the FSBL. ZYNQ AP SoC based platforms support loading the FSBL from five kinds of interfaces--jtag, QSPI Flash, NAND Flash, NOR Flash, and SD card. Section III will demonstrate booting from the SD Card. Note: You must provide a kernel image, DTB, file systems, etc. to run embedded Linux. These files may take up storage space from several mega-bytes to even a few giga-bytes. An SD card with up to 32GB of storage is the best fit for embedded Linux development. This manual will focus on SD card booting as the fastest and most efficient means of booting. You have to do two things before you can boot with the SD card. First, ensure that you configure the BootMode pins of your board to SD Boot Mode (refer to the documentation Getting Started With Embedded Linux for your board). Second, make sure you have a properly partitioned SD card according to the guidelines in the Getting Started with Embedded Linux for your board. If properly configured, the Stage 0 Boot Loader will load the file BOOT.BIN in the first partition of your SD card into On-Chip Memory (OCM), and start executing from the beginning of OCM. The file BOOT.BIN comprises the FSBL, PL logic bit files, and the SSBL (u-boot.elf in this case). The FSBL will download the PL logic bit file to the PL system, set up the PLL in the PS system and execute some other fundamental bring-up routines for peripheral devices, and finally call up the SSBL to take over control and begin loading the operating system. Digilent Inc. uses U-Boot as the SSBL. U-Boot can obtain a kernel image from an SD Card, partitioned QSPI Flash, and even through Ethernet using TFTP (Trivial FTP) if you have a functional TFTP server. By default, U-Boot starts the procedure called autoboot, which looks for the BootMode pin settings again for the source of the kernel image (in our case, an SD card). So, U-Boot calls the procedure sdboot. The procedure sdboot does three things. First, sdboot reads the kernel image (named zimage as shown below) from the FAT partition and copies it to 0x Second, sdboot reads the DTB file (named as devicetree.dtb in Figure 5) and loads it to 0x Third, sdboot reads the zipped ramdisk file system named ramdisk8m.image.gz (See Example 5.) and loads it to 0x After all the loading, U-Boot starts to run the kernel image from where sdboot loaded it. page 9 of 23
10 Example 5. U-Boot dirty (Jul :07:00) DRAM: 512 MiB MMC: SDHCI: 0 Using default environment In: serial Out: serial Err: serial Net: zynq_gem Hit any key to stop autoboot: 0 Copying Linux from SD to RAM... Device: SDHCI Manufacturer ID: 3 OEM: 5344 Name: SU04G Tran Speed: Rd Block Len: 512 SD version 1.10 High Capacity: Yes Capacity: Bus Width: 1-bit reading zimage bytes read reading devicetree.dtb 5817 bytes read reading ramdisk8m.image.gz bytes read ## Starting application at 0x Uncompressing Linux... done, booting the kernel. [ ] Booting Linux on physical CPU 0 U-Boot Commands Before the autoboot starts, there is a default three-second count down. Users may press any key during the count-down to interrupt the autoboot procedure and type in custom commands to boot the Linux kernel manually. Here are some of the most popular commands: Printenv will print the environment variables of u-boot. (See Example 6.) page 10 of 23
11 Example 6. zed-boot> printenv baudrate= bootcmd=run modeboot bootdelay=3 ethact=zynq_gem ethaddr=00:0a:35:00:01:22 ipaddr= jtagboot=echo TFTPing Linux to RAM...;tftp 0x8000 zimage;tftp 0x devicetree.dtb;tftp 0x ramdisk8m.image.gz;go 0x8000 kernel_size=0x modeboot=run sdboot qspiboot=sf probe 0 0 0;sf read 0x8000 0x x2c0000;sf read 0x x3c0000 0x40000;sf read 0x x x800000;go 0x8000 ramdisk_size=0x sdboot=echo Copying Linux from SD to RAM...;mmcinfo;fatload mmc 0 0x8000 zimage;fatload mmc 0 0x devicetree.dtb;fatload mmc 0 0x ramdisk8m.image.gz;go 0x8000 sdboot_linaro=echo Copying Linux from SD to RAM...;mmcinfo;fatload mmc 0 0x8000 zimage;fatload mmc 0 0x devicetree_linaro.dtb;go 0x8000 serverip= stderr=serial stdin=serial stdout=serial Environment size: 861/65532 bytes Echo will display a string on the serial port. (See Example 7.) Example 7. zed-boot> echo Hullo World Hullo World zed-boot> Mmcinfo will display the information about your Multi-Media Card. Example 8 is for an SD card. Example 8. zed-boot> mmcinfo Device: SDHCI Manufacturer ID: 3 OEM: 5344 Name: SU04G Tran Speed: Rd Block Len: 512 SD version 1.10 High Capacity: Yes Capacity: Bus Width: 1-bit Fatload will load a file from the FAT partition to a specified memory location. The following instruction loads zimage from the MMC (SD Card) first FAT partition to 0x8000 in the processor s memory space. (See Example 9.) page 11 of 23
12 Example 9. zed-boot> fatload mmc 0 0x8000 zimage reading zimage bytes read zed-boot> The sf subsystem allows U-Boot to load a system from SPI Flash. The functions sf subsystem provides include probe, erase, read and write. Probe will probe the FLASH device on the corresponding flash controller into the system (the following codes probe the flash connected to QSPI0. (See Example 10.) Example 10. zed-boot> sf probe 0 SF: Detected S25FL256S_4KB_64KB with page size 256, total 128 KiB 128 KiB S25FL256S_4KB_64KB at 0:0 is now current device Erase will erase the data from FLASH memory. Example 11 erases 0x40000 bytes data starting from address 0 in FLASH. Example 11. sf erase 0 0x40000 Read will read the data from FLASH memory into processor memory. Example 12 reads 0x2c0000 bytes of data from offset 0x in Flash memory into 0x8000 in main memory. Example 12. sf read 0x8000 0x x2c0000 Write will write the data to FLASH memory from processor memory. Example 13 writes 0x3E444 bytes of data from 0x in main memory into Flash memory with 0 offset. Example 13. sf write 0x x3E444 Customize U-Boot Yourself If you want to customize U-Boot, download the source files from the git repository u-bootdigilent at (See Example 14.) Example 14. $git clone The settings of the board you have are located under include/configs/<board id>.h. For example, the configure header file for the ZedBoard is named zynq_zed.h. page 12 of 23
13 Configure U-Boot through a series of macros defined by the board header files. Example 15 shows the main part we abstracted from the ZedBoard configuration header file for the ZedBoard. Example 15. #define CONFIG_EXTRA_ENV_SETTINGS \ "ethaddr=00:0a:35:00:01:22\0" \ "kernel_size=0x140000\0" \ "ramdisk_size=0x200000\0" \ "qspiboot=sf probe 0 0 0;" \ "sf read 0x8000 0x x2c0000;" \ "sf read 0x x3c0000 0x40000;" \ "sf read 0x x x800000;" \ "go 0x8000\0" \ "sdboot_linaro=echo Copying Linux from SD to RAM...;" \ "mmcinfo;" \ "fatload mmc 0 0x8000 zimage;" \ "fatload mmc 0 0x devicetree_linaro.dtb;" \ "go 0x8000\0" \ "sdboot=echo Copying Linux from SD to RAM...;" \ "mmcinfo;" \ "fatload mmc 0 0x8000 zimage;" \ "fatload mmc 0 0x devicetree.dtb;" \ "fatload mmc 0 0x ramdisk8m.image.gz;" \ "go 0x8000\0" \ "jtagboot=echo TFTPing Linux to RAM...;" \ "tftp 0x8000 zimage;" \ "tftp 0x devicetree.dtb;" \ "tftp 0x ramdisk8m.image.gz;" \ "go 0x8000\0" #define CONFIG_IPADDR #define CONFIG_SERVERIP In the environment settings for Example 15, ethaddr defines the initial MAC address of your board and CONFIG_IPADDR defines the IP address of your board when U-Boot is running. The environment variable sdboot defines SD card booting procedure as follows: Echo Copying Linux from SD to RAM ; Display Multi-Media Card (MMC) information by calling function mmcinfo; load zimage from SD Card to Memory at 0x8000; Loading devicetree.dtb to memory at 0x ; loading ram disk image ramdisk8m.image.gz to memory at 0x800000; and start from 0x8000 to run The Linux Kernel. You can change the booting sequence by changing the environment variables here. page 13 of 23
14 Section IV: Linux Kernel Configuration The Linux kernel provides thousands of configurations to allow users to tailor kernel features based on their specific needs. Kernel configuration can be very tedious, so we recommend you begin with the default configuration as a baseline and start adding more features if you need them. Configure the Linux Kernel You can find the default configuration for your Digilent board at arch/arm/configs in the kernel source under the name digilent_<board name>_defconfig (e.g. digilent_zed_defconfig for ZedBoard). You can import the default board configuration by running command: $ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- digilent_<board name>_defconfig The kernel configuration system has several different targets. You can show these configuration targets by typing $make help under the root folder of kernel source. Example 16 demonstrates the most common configuration targets. Example 16. Configuration targets: config - Update current config utilising a line-oriented program nconfig - Update current config utilising a ncurses menu based program menuconfig - Update current config utilising a menu based program xconfig - Update current config utilising a QT based front-end gconfig - Update current config utilising a GTK based front-end oldconfig - Update current config utilising a provided.config as base defconfig - New config with default from ARCH supplied defconfig Refer to kconfig.txt and kconfig-language.txt under the Documentation/kbuild folder for more information concerning the kernel configuration subsystem. Kernel Arguments Some of the configurations can be passed to kernel at boot time, like the default serial port for early printk, the root file system, etc. The default kernel booting arguments can be set in the kernel configuration menu at Boot Options -> Default kernel command string (CONFIG_CMDLINE). However, the bootargs property under node chosen in the device tree can overwrite the default kernel booting arguments. (See Example 17.) Example 17. chosen { bootargs = "console=ttyps0, root=/dev/ram rw initrd=0x800000,8m earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=1"; linux,stdout-path = "/axi@0/uart@e "; }; We abstracted the boot arguments in Example17 from the ZedBoard device tree. These boot arguments show that the default console is set to ttyps0 which is the UART0 of the Zynq PS system and the root device is set to a ramdisk with read and write privileges, located at 0x with a size of 8M. Early Printk is allowed and the root file system (i.e. the initial ramdisk image) is ext4. page 14 of 23
15 For more detailed information about kernel parameters, please refer to kernel-parameter.txt under Documentation in the Linux kernel source. File System Customization The Linux Kernel is a standalone program that manages system resources and provides a standardized Application Programming Interface (API) for user applications to interact with hardware. The Linux Kernel requires a file system to become a computer system. Otherwise, the kernel cannot interact with the human and will panic immediately. The Appendix: How to Debug the Linux Kernel discusses procedures for dealing with panics. Configure Root File System You must specify a root file system in the kernel arguments with: root=/dev/ram rw initrd=0x800000,8m rootfstype=ext4 As explained in the previous section, it assigns the root file system to the ramdisk that is loaded into Memory (/dev/ram) at 0x If you want to boot a system like the Linaro Desktop from partition 2 on your SD card, then change the previous argument to: root=/dev/mmcblk0p2 rw rootfstype=ext4 This line points the root file system to the block device /dev/mmcblk0p2 that is the second partition on the SD card. For detailed instructions about how to format your SD card and install Linaro, please refer to the Getting Started With Embedded Linux guides available on Digilent Website, Embedded Linux Page. Boot with Ramdisk The ramdisk image is available at Digilent Website, Embedded Linux Page as well. To customize the ramdisk, you need to decompress it first with the command $ gzip -d ramdisk8m.image.gz The command will remove the zipped file and substitute it with a decompressed file named ramdisk8m.image. Then you can mount the ramdisk8m.image to a directory in your file system with: $ sudo mount ramdisk8m.image /mnt/ramdisk -o loop You can make changes to the file system directly by reading and writing the /mnt/ramdisk folder. After you finished the customization, unmount ramdisk8m.image with the command: $ sudo umount /mnt/ramdisk Zip the file up again with the command: page 15 of 23
16 $ gzip -9 ramdisk8m.image.gz The Ramdisk image will be loaded into the main memory before Linux boots. So, all the changes to the file system during runtime will only take place in the memory and will not get written back to Ramdisk image file when the system shuts down. If you want to preserve your changes, you need to consider hosting the file system on the SD card partition. Boot from SD Card Partition To boot a filesystem loaded on an SD card requires at least two partitions be present on the SD card. The first partition of the SD card should be formatted into FAT to hold design files (BOOT.BIN), the DTB file (devicetree.dtb) and the kernel image (zimage). Format the second partition on the SD into an ext file system (ext4 is recommended) to host the root file system. Most Linux distributions provide tools like parted and fdisk to create a partition table on the SD card. Refer to Getting Started with Embedded Linux found at the Embedded Linux page on the Digilent website for step-bystep instructions on how to partition an SD card to host the root file system. page 16 of 23
17 APPENDIX: How to Debug the Linux Kernel Things may go wrong during your development the kernel may panic and become dead without any notice during boot; there may be no messages that appear on your terminal; the kernel may say Oops at any time; or your system does not work as you expect. If you believe a bug in the Kernel source is responsible for an error, you may file a bug report to us via the link on our Developer s Wiki Page: Before filing a bug report, Digilent Inc. recommends that you do some debugging yourself to try and locate the problem. We encourage our users to file a bug-fix patch if you can locate and solve any problems with the software. This appendix section presents some easy ways to debug the kernel. Debugging Support in Kernel The kernel provides debugging support in its configuration settings that allow you to print out more detailed messages and information about bugs in the software. Debugging support is generally not enabled on deployment, because designers try to optimize the kernel for speed of execution, especially on embedded systems with limited computing resources. Table 1 presents a list of commonly used debugging support configurations that you should consider to enable during your development: Name Menu Location Description CONFIG_DEBUG_DRI VER CONFIG_DEBUG_DRV RES CONFIG_DEBUG_KER NEL CONFIG_DEBUG_BUG VERBOSE CONFIG_DEBUG_INF O CONFIG_EARLY_PRI NTK Device Driver -> Generic Driver Options Device Driver -> Generic Driver Options Kernel Hacking Kernel Hacking Kernel Hacking Kernel Hacking-> Kernel Low-level debugging functions Input a Y here if you want the Driver core to produce a bunch of debug messages to the system log. Choose this selection if you are having a problem with the driver core and want to see more of what is happening. This option enables kernel parameter devres.log. If set to non-zero, devres.log debug messages are printed. Select this if you are having a problem with devres.log or want to debug resource management for a managed device. Input Y here if you are developing drivers or trying to debug and identify kernel problems Input Y here to make BUG() panics output the file name and line number of the BUG() call as well as the EIP and Oops trace. If you type Y here the resulting kernel image will include debugging info resulting in a large kernel image. This adds debug symbols to the kernel and modules, and is needed if you intend to use kernel crashdump or binary object tools like crash, kgdb, LKCD, gdb etc on the kernel. Say Y here only if you plan to debug the kernel. Say Y here if you want to have an early console using kernel low-level debugging functions. Add earlyprintk to your kernel parameter to enable this console. Table 1. Common Debugging Support Configurations page 17 of 23
18 There are more options in the Kernel Hacking menu that you may choose to enable according to your needs. Debug by Printing Printing is always an easy and useful way to debug code. The kernel provides the printk function, which works like printf in traditional C libraries. (See Example 18) Example 18. printk(kern_debug Here I am: %s:%d\n, FUNCTION, LINE ); printk can work at 8 log levels defined in include/linux/printk.h and listed in Table 2. Log Level Name Meaning 0 KERN_EMERG when system is unusable, usually before a kernel crash 1 KERN_ALERT when action must be taken immediately 2 KERN_CRIT 3 KERN_ERR in critical conditions, often related to critical software or hardware failures in error conditions, often used in device drivers to report errors during startup. 4 KERN_WARNING in warning conditions 5 KERN_NOTICE in normal but significant conditions 6 KERN_INFO to print informational messages, often used by device drivers to report information during startup. 7 KERN_DEBUG to print debug-level messages Table 2. Log Level Definitions By default, any message other than KERN_DEBUG will be printed to console during booting. However, printk writes all the messages into a ring buffer with length of LOG_BUF_LEN. You can configure the size with CONFIG_LOG_BUF_SHIFT under General setup in the kernel configuration menu. You can also print all of the messages by running a dmesg command in the shell. Kernel Panic and Oops Messages When errors occur, the kernel reports either a Panic or an Oops Message on the terminal. When the kernel panics, the error is fatal and kernel will not recover from it. However, an Oops message will prompt the kernel to stop any offending processes and keep working. Even if the kernel still appears to be working correctly, it may have already caused some side-effects that could lead to future kernel panics. When the kernel detects a fatal error that it cannot recover from it will call a panic() function. The panic() function displays a message telling users why the panic occurred. After displaying the panic message the kernel then stops every CPU and dumps the stack of CPUs if CONFIG_DEBUG_BUGVERBOSE is selected. The panic message in example 19 shows that the root file page 18 of 23
19 system specified in the boot command cannot be found and thus the kernel panics due to the failure of mounting the root file system. Example 19. [ ] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0) [ ] CPU0: stopping [ ] [<c >] (unwind_backtrace+0x0/0xe0) from [<c0011c10>] (handle_ipi+0xf4/0x164) [ ] [<c0011c10>] (handle_ipi+0xf4/0x164) from [<c00084c0>] (gic_handle_irq+0x90/0x9c) [ ] [<c00084c0>] (gic_handle_irq+0x90/0x9c) from [<c000d240>] ( irq_svc+0x40/0x70) [ ] Exception stack(0xd8b11c90 to 0xd8b11cd8) [ ] 1c80: c04651b c c [ ] 1ca0: c0486fa f d8b11cf [ ] 1cc0: d8b10038 d8b11cd8 c001f744 c001f ffffffff [ ] [<c000d240>] ( irq_svc+0x40/0x70) from [<c001f748>] (vprintk+0x384/0x3d0) [ ] [<c001f748>] (vprintk+0x384/0x3d0) from [<c02f3188>] (printk+0x18/0x24) [ ] [<c02f3188>] (printk+0x18/0x24) from [<c >] (drm_mode_probed_add+0x30/0x4c) [ ] [<c >] (drm_mode_probed_add+0x30/0x4c) from [<c018aa34>] (do_detailed_mode+0x328/0x35c) [ ] [<c018aa34>] (do_detailed_mode+0x328/0x35c) from [<c >] (drm_for_each_detailed_block+0x88/0xf4) [ ] [<c >] (drm_for_each_detailed_block+0x88/0xf4) from [<c018ab98>] (drm_add_edid_modes+0x130/0x61c) [ ] [<c018ab98>] (drm_add_edid_modes+0x130/0x61c) from [<c018e89c>] (adv7511_get_modes+0x90/0xa4) [ ] [<c018e89c>] (adv7511_get_modes+0x90/0xa4) from [<c018d44c>] (analog_drm_connector_get_modes+0x88/0x94) [ ] [<c018d44c>] (analog_drm_connector_get_modes+0x88/0x94) from [<c01792c0>] (drm_helper_probe_single_connector_modes+0x110/0x2c0) [ ] [<c01792c0>] (drm_helper_probe_single_connector_modes+0x110/0x2c0) from [<c0176c7c>] (drm_fb_helper_probe_connector_modes+0x40/0x58) [ ] [<c0176c7c>] (drm_fb_helper_probe_connector_modes+0x40/0x58) from [<c01784f4>] (drm_fb_helper_initial_config+0x150/0x1b0) [ ] [<c01784f4>] (drm_fb_helper_initial_config+0x150/0x1b0) from [<c018e668>] (analog_drm_fbdev_init+0xc0/0x104) [ ] [<c018e668>] (analog_drm_fbdev_init+0xc0/0x104) from [<c018dbe0>] (analog_drm_load+0xe0/0x128) [ ] [<c018dbe0>] (analog_drm_load+0xe0/0x128) from [<c01825d4>] (drm_get_platform_dev+0xe0/0x1bc) [ ] [<c01825d4>] (drm_get_platform_dev+0xe0/0x1bc) from [<c >] (process_one_work+0x1d4/0x304) [ ] [<c >] (process_one_work+0x1d4/0x304) from [<c0032f40>] (worker_thread+0x1a8/0x2c0) [ ] [<c0032f40>] (worker_thread+0x1a8/0x2c0) from [<c00361f4>] (kthread+0x80/0x8c) The Oops message should include the Oops location info and it dumps the current CPU registers and stacks, followed by a back trace of the called functions. In Example 20, we generated the Oops message in the dma_alloc that the drm_get_platform_dev function evoked according to the function back trace information. This is probably a DMA memory management error in the code. For more information on Oops messages, you may refer to the oops-tracing.txt under the Linux kernel source Documentation folder. page 19 of 23
20 Example 20. [ ] kernel BUG at arch/arm/mm/dma-mapping.c:254! [ ] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP [ ] Modules linked in: [ ] CPU: 1 Tainted: G W (3.3.0-digilent zed-beta-dirty #3) [ ] PC is at dma_alloc+0x1c4/0x2f0 [ ] LR is at arm_vmregion_alloc+0xe0/0x110 [ ] pc : [<c >] lr : [<c0017ad4>] psr: a [ ] sp : d8061da8 ip : fp : c085f000 [ ] r10: d82436c0 r9 : c085f000 r8 : [ ] r7 : r6 : dfffc400 r5 : r4 : fffc066f [ ] r3 : fd r2 : r1 : r0 : d82436c0 [ ] Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel [ ] Control: 18c5387d Table: a DAC: [ ] Process kworker/1:0 (pid: 8, stack limit = 0xd80602f0) [ ] Stack: (0xd8061da8 to 0xd ) [ ] 1da0: c047d174 d8061e d8249f98 d d8249f40 [ ] 1dc0: d d c00161ac [ ] 1de0: d8249f98 c d8061e d837bdc0 c017cc00 [ ] 1e00: d d8061e d [ ] 1e20: [ ] 1e40: d82c7340 d837bdc [ ] 1e60: d d8061ecc d c017ad d0 [ ] 1e80: d d837bdc d [ ] 1ea0: d8200d00 c017af c d1745d d837bdc0 d [ ] 1ec0: c c04801c d837bdc0 d [ ] 1ee0: c09464e8 c0486d5c c017ca84 d d82c76c c04b2360 [ ] 1f00: c093a834 c d8061f10 c c093a5e c03dae33 [ ] 1f20: d8204a c0486c c0486c [ ] 1f40: d d8204a c01861a4 d80bbe00 c0486c c04b2360 [ ] 1f60: d80179c0 c c0949c00 c01914c c00325e0 d80179c [ ] 1f80: c0486d60 d80179c0 c d80179d c [ ] 1fa0: c0032be d804ff00 d80179c0 c0032a [ ] 1fc0: c0035e94 c000dfcc d80179c [ ] 1fe0: d8061fe0 d8061fe0 d804ff00 c0035e14 c000dfcc c000dfcc [ ] [<c >] ( dma_alloc+0x1c4/0x2f0) from [<c00161ac>] (dma_alloc_writecombine+0x1c/0x24) [ ] [<c00161ac>] (dma_alloc_writecombine+0x1c/0x24) from [<c >] (drm_gem_cma_create+0x4c/0xc8) [ ] [<c >] (drm_gem_cma_create+0x4c/0xc8) from [<c017cc00>] (drm_fbdev_cma_probe+0xa8/0x20c) [ ] [<c017cc00>] (drm_fbdev_cma_probe+0xa8/0x20c) from [<c017ad38>] (drm_fb_helper_single_fb_probe+0x190/0x278) [ ] [<c017ad38>] (drm_fb_helper_single_fb_probe+0x190/0x278) from [<c017af94>] (drm_fb_helper_initial_config+0x174/0x1b0) [ ] [<c017af94>] (drm_fb_helper_initial_config+0x174/0x1b0) from [<c017ca84>] (drm_fbdev_cma_init+0xa8/0xd4) [ ] [<c017ca84>] (drm_fbdev_cma_init+0xa8/0xd4) from [<c >] (analog_drm_load+0x100/0x154) [ ] [<c >] (analog_drm_load+0x100/0x154) from [<c01861a4>] (drm_get_platform_dev+0xe0/0x1bc) [ ] [<c01861a4>] (drm_get_platform_dev+0xe0/0x1bc) from [<c00325e0>] (process_one_work+0x1d4/0x304) [ ] [<c00325e0>] (process_one_work+0x1d4/0x304) from [<c0032be0>] (worker_thread+0x1ac/0x2c4) [ ] [<c0032be0>] (worker_thread+0x1ac/0x2c4) from [<c0035e94>] (kthread+0x80/0x8c) [ ] [<c0035e94>] (kthread+0x80/0x8c) from [<c000dfcc>] (kernel_thread_exit+0x0/0x8) [ ] Code: e e e a (e7f001f2) Locating codes using GDB and XMD Another good way to debug the kernel is to use a GDB remote protocol with the Xilinx Microprocessor Debugger (XMD) via JTAG to debug a running kernel on a Zynq AP SoC based Digilent Board. In the command line of the host PC, open XMD and connect to the Zynq board using the command: xmd> connect arm hw. Open another command line on your host PC, and run GDB using command: $gdb nw vmlinux. Then, under the GDB command prompt, connect to the port created by XMD (the default should be localhost:1234) with the command: (gdb) target remote localhost: page 20 of 23
21 GDB will show where the kernel is hanging up. Example 21 shows that the kernel hangs at function xuart_console_wait_tx. You can back trace the function call procedure with the command backtrace. Example 21. (gdb) target remote localhost:1234 Remote debugging using localhost:1234 0xc01ea030 in xuartps_console_wait_tx (port=0xc0b84d78) at drivers/tty/serial/xilinx_uartps.c: while ((xuartps_readl(xuartps_sr_offset) & XUARTPS_SR_TXEMPTY) (gdb) backtrace #0 0xc01ea030 in xuartps_console_wait_tx (port=0xc0b84d78) at drivers/tty/serial/xilinx_uartps.c:944 #1 0xc01ea05c in xuartps_console_putchar (port=0xc0b84d78, ch=91) at drivers/tty/serial/xilinx_uartps.c:958 #2 0xc01e6e4c in uart_console_write (port=0xc0b84d78, s=<value optimized out>, count=78, putchar=0xc01ea03c <xuartps_console_putchar>) at drivers/tty/serial/serial_core.c:1680 #3 0xc01ea1d8 in xuartps_console_write (co=<value optimized out>, s=0xc0731df9 "[ ] usb 1-1.2: new low-speed USB device number 3 using xusbps-ehci\n WARNING: at arch/arm/mm/dma-mapping.c:198 consistent_init+0x78/0x10c()\n<4>[ ] Modules linked in:\n<4>[ 0.430"..., count=78) at drivers/tty/serial/xilinx_uartps.c:985 #4 0xc00226bc in call_console_drivers (start=20840, end=20918) at kernel/printk.c:520 #5 0xc in _call_console_drivers (start=<value optimized out>, end=20918, msg_log_level=<value optimized out>) at kernel/printk.c:553 #6 0xc0022f70 in call_console_drivers () at kernel/printk.c:654 #7 console_unlock () at kernel/printk.c:1275 #8 0xc in vprintk (fmt=<value optimized out>, args=...) at kernel/printk.c:964 #9 0xc039d8bc in printk (fmt=0xc04a7dad "%s%s %s: %pv") at kernel/printk.c:756 #10 0xc020b5b8 in dev_printk (level=0xc049befa "<6>", dev=0xd93f8468, vaf=0xd847be74) at drivers/base/core.c:1846 #11 0xc020b60c in _dev_info (dev=<value optimized out>, fmt=0xc04af2e6 "%s %s USB device number %d using %s\n") at drivers/base/core.c:1895 #12 0xc02581f4 in hub_port_init (hub=0xd93fae00, udev=0xd93f8400, port1=2, retry_counter=0) at drivers/usb/core/hub.c:2935 #13 0xc025abf0 in hub_port_connect_change ( unused=<value optimized out>) at drivers/usb/core/hub.c:3329 #14 hub_events ( unused=<value optimized out>) at drivers/usb/core/hub.c:3645 #15 hub_thread ( unused=<value optimized out>) at drivers/usb/core/hub.c:3704 #16 0xc0042b94 in kthread (_create=0xd805befc) at kernel/kthread.c:121 #17 0xc000e820 in kernel_thread_helper () Backtrace stopped: frame did not save the PC (gdb) l 939 **/ 940 static void xuartps_console_wait_tx(struct uart_port *port) 941 { 942 // unsigned int timeout = 10000; while ((xuartps_readl(xuartps_sr_offset) & XUARTPS_SR_TXEMPTY) 945!= XUARTPS_SR_TXEMPTY) 946 //!= XUARTPS_SR_TXEMPTY && --timeout) 947 barrier(); 948 } page 21 of 23
22 Sysfs, Proc and Debugfs File System Your applications run in user mode for Linux and have no access to kernel information but through system calls. However, some pseudo file systems, e.g. sys file system, proc file system, debug file system, create a window for users to interact with kernel parameters and inspect kernel status. For more information on using these pseudo file systems, see debugfs.txt, proc.txt, and sysfs.txt in the Documentation/filesystems folder of the kernel source. page 22 of 23
23 Additional Resources Consult the following documents for additional information on designing embedded Linux systems for Digilent system boards. Getting Started with Embedded Linux ZedBoard This document describes how to obtain the Linux Hardware Design and use it with the Digilent Linux repository to build and run a fully functional Linux system on the ZedBoard. You can obtain this document from the ZedBoard product page on the Digilent website. Embedded Linux Hands-on Tutorial ZedBoard This document walks the reader through the process of modifying the ZedBoard Linux Hardware Design to include additional hardware, making this hardware accessible to Linux by modifying the device tree, and finally designing a custom driver that brings the hardware s functionality up to the Linux user. It can be obtained from the ZedBoard product page on the Digilent website. ZedBoard Linux Hardware Design Project Guide This document describes the ZedBoard Linux Hardware Design, and walks the reader through the process of building all the sources required to generate the BOOT.BIN file. It is packaged along with the ZedBoard Linux Hardware Design, which can be obtained from the ZedBoard product page. Linux Developer s Wiki This web page contains an up to date list of hardware that is supported by the Digilent Linux repository and an FAQ section that addresses some issues you may run into while using the current version of the kernel. It also contains information on submitting patches for those who are interested in contributing code. You can find the Linux Developer s Wiki at: page 23 of 23
Embedded Linux Platform Developer
Embedded Linux Platform Developer Course description Advanced training program on Embedded Linux platform development with comprehensive coverage on target board bring up, Embedded Linux porting, Linux
Building an Embedded Processor System on a Xilinx Zync FPGA (Profiling): A Tutorial
Building an Embedded Processor System on a Xilinx Zync FPGA (Profiling): A Tutorial Embedded Processor Hardware Design January 29 th 2015. VIVADO TUTORIAL 1 Table of Contents Requirements... 3 Part 1:
How to Run the MQX RTOS on Various RAM Memories for i.mx 6SoloX
Freescale Semiconductor, Inc. Document Number: AN5127 Application Note Rev. 1, 05/2015 How to Run the MQX RTOS on Various RAM Memories for i.mx 6SoloX 1 Introduction This document describes how to customize
MicroZed Getting Started Guide
MicroZed Getting Started Guide Version 1.1 16 October 2013 Copyright 2013, Avnet, Inc. All rights reserved. Published by Avnet Electronics Marketing, a group of Avnet, Inc. Avnet, Inc. disclaims any proprietary
Getting Started Guide. Version 7.0
Getting Started Guide Version 7.0 Revision History DATE VERSION REVISION 08/06/2012 1.0 Initial Release 08/08/2012 2.0 Further clarified un-mounting of media 08/10/2012 3.0 08/11/2012 4.0 Further clarified
Attention. restricted to Avnet s X-Fest program and Avnet employees. Any use
Attention The Content material is contained copyright in by this its presentation original authors, is the property and is used of Avnet by Electronics permission. Marketing. This compendium Use of this
The embedded Linux quick start guide lab notes
The embedded Linux quick start guide lab notes Embedded Linux Conference Europe 2010 Date: Tuesday 26th October Location: DeVere University of Arms Hotel, Cambridge Room: Churchill Suite Presenter: Chris
Zynq SATA Storage Extension (Zynq SSE) - NAS. Technical Brief 20140501 from Missing Link Electronics:
Technical Brief 20140501 from Missing Link Electronics: Zynq SSE for Network-Attached Storage for the Avnet Mini-ITX For the evaluation of Zynq SSE MLE supports two separate hardware platforms: The Avnet
VoIP Laboratory B How to re flash an IP04
VoIP Laboratory B How to re flash an IP04 (cc) Creative Commons Share Alike Non Commercial Attribution 3 This lab guides you through the process of re flashing an IP04. To re flash a unit is useful when
ROM Monitor. Entering the ROM Monitor APPENDIX
APPENDIX B This appendix describes the Cisco router ROM monitor (also called the bootstrap program). The ROM monitor firmware runs when the router is powered up or reset. The firmware helps to initialize
Application Note: AN00141 xcore-xa - Application Development
Application Note: AN00141 xcore-xa - Application Development This application note shows how to create a simple example which targets the XMOS xcore-xa device and demonstrates how to build and run this
Digitale Signalverarbeitung mit FPGA (DSF) Soft Core Prozessor NIOS II Stand Mai 2007. Jens Onno Krah
(DSF) Soft Core Prozessor NIOS II Stand Mai 2007 Jens Onno Krah Cologne University of Applied Sciences www.fh-koeln.de [email protected] NIOS II 1 1 What is Nios II? Altera s Second Generation
A Design of Video Acquisition and Transmission Based on ARM. Ziqiang Hao a, Hongzuo Li b
A Design of Video Acquisition and Transmission Based on ARM Ziqiang Hao a, Hongzuo Li b Changchun University of Science & Technology, Changchun, Jilin, China a [email protected], b [email protected] Keywords:video
Zynq-7000 Platform Software Development Using the ARM DS-5 Toolchain Authors: Simon George and Prushothaman Palanichamy
Application Note: Zynq-7000 All Programmable Soc XAPP1185 (v2.0) May 6, 2014 Zynq-7000 Platform Software Development Using the ARM DS-5 Toolchain Authors: Simon George and Prushothaman Palanichamy Summary
Getting Started with Embedded System Development using MicroBlaze processor & Spartan-3A FPGAs. MicroBlaze
Getting Started with Embedded System Development using MicroBlaze processor & Spartan-3A FPGAs This tutorial is an introduction to Embedded System development with the MicroBlaze soft processor and low
Getting started with ARM-Linux
Getting started with ARM-Linux www.embeddedarm.com (480)-837-5200 usa Connecting serial communications and power (JP2 must be installed to enable console) An ANSI terminal or a PC running a terminal emulator
Chapter 1 Hardware and Software Introductions of pcduino
Chapter 1 Hardware and Software Introductions of pcduino pcduino is a high performance, cost effective mini PC platform that runs PC like OS such as Ubuntu Linux. It outputs its screen to HDMI enabled
i.mx USB loader A white paper by Tristan Lelong
i.mx USB loader A white paper by Tristan Lelong Introduction This document aims to explain the serial downloader feature of i.mx SoCs on Linux (available across i.mx family starting with i.mx23). This
Track One Building a connected home automation device with the Digi ConnectCore Wi-i.MX51 using LinuxLink
Track One Building a connected home automation device with the Digi ConnectCore Wi-i.MX51 using LinuxLink Session 1 Assembling and booting a small footprint Linux platform To join the teleconference -------------------------------------------------------
In-System Programmer USER MANUAL RN-ISP-UM RN-WIFLYCR-UM-.01. www.rovingnetworks.com 1
RN-WIFLYCR-UM-.01 RN-ISP-UM In-System Programmer 2012 Roving Networks. All rights reserved. Version 1.1 1/19/2012 USER MANUAL www.rovingnetworks.com 1 OVERVIEW You use Roving Networks In-System-Programmer
EXPLORING LINUX KERNEL: THE EASY WAY!
EXPLORING LINUX KERNEL: THE EASY WAY! By: Ahmed Bilal Numan 1 PROBLEM Explore linux kernel TCP/IP stack Solution Try to understand relative kernel code Available text Run kernel in virtualized environment
Network connectivity controllers
Network connectivity controllers High performance connectivity solutions Factory Automation The hostile environment of many factories can have a significant impact on the life expectancy of PCs, and industrially
Application Development Kit for Android Installation Guide
Application Development Kit for Android Installation Guide 90001280_B 3/12/2012 2012 Digi International Inc. All rights reserved. Digi, Digi International, the Digi logo, the Digi website, a Digi International
The Freescale Embedded Hypervisor
November, 2010 The Freescale Embedded Hypervisor Jacques Landry Reg. U.S. Pat. & Tm. Off. BeeKit, BeeStack, CoreNet, the Energy Efficient Solutions logo, Flexis, MXC, Platform in a Package, Processor Expert,
Getting Started with the Xilinx Zynq- 7000 All Programmable SoC Mini-ITX Development Kit
Getting Started with the Xilinx Zynq- 7000 All Programmable SoC Mini-ITX Development Kit Table of Contents ABOUT THIS GUIDE... 3 ADDITIONAL DOCUMENTATION... 3 ADDITIONAL SUPPORT RESOURCES... 3 INTRODUCTION...
MicroBlaze Debug Module (MDM) v3.2
MicroBlaze Debug Module (MDM) v3.2 LogiCORE IP Product Guide Vivado Design Suite Table of Contents IP Facts Chapter 1: Overview Feature Summary..................................................................
Yun Shield User Manual VERSION: 1.0. Yun Shield User Manual 1 / 22. www.dragino.com
Yun Shield User Manual VERSION: 1.0 Version Description Date 0.1 Initiate 2014-Jun-21 1.0 Release 2014-Jul-08 Yun Shield User Manual 1 / 22 Index: 1 Introduction... 3 1.1 What is Yun Shield... 3 1.2 Specifications...
SKP16C62P Tutorial 1 Software Development Process using HEW. Renesas Technology America Inc.
SKP16C62P Tutorial 1 Software Development Process using HEW Renesas Technology America Inc. 1 Overview The following tutorial is a brief introduction on how to develop and debug programs using HEW (Highperformance
PBX DIGITAL TELEPHONE EXCHANGE MAINTENANCE GUIDE
PBX DIGITAL TELEPHONE EXCHANGE MAINTENANCE GUIDE PBX MAINTENANCE GUIDE MARCH -2010 II Version Table DATE/VERSION OF GUIDE 24.03.2010/AAA DS200L PBX BK REV. AAA 24.03.2010 KAREL reserves the right to make
PC Notebook Diagnostic Card
www.winter-con.com User s Guide PC Notebook Diagnostic Card User s Guide 1 www.winter-con.com User s Guide INTRODUCTION Notebook Diagnostic Card is a powerful diagnostic tool for technicians and administrators
Embedded Linux Systems
Dpto Sistemas Electrónicos y de Control Universidad Politécnica de Madrid Embedded Linux Systems Using Buildroot for building Embedded Linux Systems with the Raspberry-PI V1.2 Mariano Ruiz 2014 E U I T
Altera SoC Embedded Design Suite User Guide
Altera SoC Embedded Design Suite User Guide Subscribe ug-1137 101 Innovation Drive San Jose, CA 95134 www.altera.com TOC-2 Contents Introduction to SoC Embedded Design Suite... 1-1 Overview... 1-1 Linux
CodeWarrior for Power Architecture 10.1.1 Errata
CodeWarrior for Power Architecture 10.1.1 Errata MTWX39813 MTWX46941 MTWX47555 MTWX48310 MTWX48571 Build Tools P4080 runtime does not support building ROM applications Getting incorrect results when optimizing
opensuse for ARM On Your Device Sonntag, 21. Oktober 12
opensuse for ARM On Your Device ARM Booting ARM Booting Boot Loader ARM Booting Boot Loader Kernel ARM Booting Boot Loader Kernel User Space ARM Booting Boot Loader Kernel Appliance User Space Boot Loader
Matrix 510/520 User Guide
Matrix 510/520 User Guide Introduction: Matrix 510/520 are ARM9-based Linux ready industrial computer. The key features are as follow: Matrix 520 Layout 1. ARM920T ARM Thumb Processor with 200MIPS at 180MHz,
10 STEPS TO YOUR FIRST QNX PROGRAM. QUICKSTART GUIDE Second Edition
10 STEPS TO YOUR FIRST QNX PROGRAM QUICKSTART GUIDE Second Edition QNX QUICKSTART GUIDE A guide to help you install and configure the QNX Momentics tools and the QNX Neutrino operating system, so you can
Going Linux on Massive Multicore
Embedded Linux Conference Europe 2013 Going Linux on Massive Multicore Marta Rybczyńska 24th October, 2013 Agenda Architecture Linux Port Core Peripherals Debugging Summary and Future Plans 2 Agenda Architecture
Ultra Thin Client TC-401 TC-402. Users s Guide
Ultra Thin Client TC-401 TC-402 Users s Guide CONTENT 1. OVERVIEW... 3 1.1 HARDWARE SPECIFICATION... 3 1.2 SOFTWARE OVERVIEW... 4 1.3 HARDWARE OVERVIEW...5 1.4 NETWORK CONNECTION... 7 2. INSTALLING THE
Chapter 2. Basic Concepts. 2.1.1 Linux Workstation. 2.1 Types of Hosts
Chapter 2. Basic Concepts As we saw in the previous chapter, there is a rich variety of embedded Linux systems. There are nevertheless a few key characteristics that apply uniformly to most embedded Linux
Embedded Linux development with Buildroot training 3-day session
Embedded Linux development with training 3-day session Title Overview Duration Trainer Language Audience Embedded Linux development with training Introduction to Managing and building the configuration
Digital Photo Bank / Portable HDD Pan Ocean E350 User Manual
Digital Photo Bank / Portable HDD Pan Ocean E350 User Manual Installing a hard disk 1. Power off the unit. 2. Remove the bottom cover from the unit by removing four screws. 3. Insert the 2.5 HDD to the
SBC8600B Single Board Computer
SBC8600B Single Board Computer 720MHz TI s Sitara AM3359 ARM Cortex-A8 Microprocessor Onboard 512MByte DDR3 SDRAM and 512MByte NAND Flash UARTs, 2*USB Host and 1*OTG, 2*Ethernet, CAN, RS485, LCD/TSP, Audio,
Software Development Environment
Software Development Environment Zynq 14.2 Version This material exempt per Department of Commerce license exception TSU Objectives After completing this module, you will be able to: Understand the basic
SCSI device drivers are provided for the following operating systems: Microsoft Windows NT Server 4.0 Novell NetWare 5.1
This section describes how to install and configure the Dell small computer system interface (SCSI) device drivers included with your Dell PowerEdge 1400 computer system. These device drivers are designed
Lab Experiment 1: The LPC 2148 Education Board
Lab Experiment 1: The LPC 2148 Education Board 1 Introduction The aim of this course ECE 425L is to help you understand and utilize the functionalities of ARM7TDMI LPC2148 microcontroller. To do that,
Embedded Linux development training 4 days session
Embedded Linux development training 4 days session Title Overview Duration Trainer Language Audience Prerequisites Embedded Linux development training Understanding the Linux kernel Building the Linux
Enterprise Erase LAN
Enterprise Erase LAN Network Erasing and Asset Management Server Version 2.0 Users Guide 888.700.8560 toll free www.tabernus.com 11130 Jollyville Rd Suite 301 Austin, TX 78757 Table of Contents 1 Product
Pre-tested System-on-Chip Design. Accelerates PLD Development
Pre-tested System-on-Chip Design Accelerates PLD Development March 2010 Lattice Semiconductor 5555 Northeast Moore Ct. Hillsboro, Oregon 97124 USA Telephone: (503) 268-8000 www.latticesemi.com 1 Pre-tested
Adapting the PowerPC 403 ROM Monitor Software for a 512Kb Flash Device
Adapting the PowerPC 403 ROM Monitor Software for a 512Kb Flash Device IBM Microelectronics Dept D95/Bldg 060 3039 Cornwallis Road Research Triangle Park, NC 27709 Version: 1 December 15, 1997 Abstract
Software User Guide UG-461
Software User Guide UG-461 One Technology Way P.O. Box 9106 Norwood, MA 02062-9106, U.S.A. Tel: 781.329.4700 Fax: 781.461.3113 www.analog.com ezlinx icoupler Isolated Interface Development Environment
Version 1.0. File System. Network Settings
Factory Default Settings LAN 1 IP Address: 192.168.2.127 Login: root or guest ( telnet guest only) Password: root or guest ( telnet guest only) Serial Console Port: Baud rate: 115200 Data format: 8 Bits,
The Device Tree: Plug and play for Embedded Linux
The Device Tree: Plug and play for Embedded Linux December 3rd, 2012 This work is released under Creative Common s CC0 license version 1.0 or later. To the extent possible under law, the author has waived
LINUX BOOT TIME OPTIMIZATION FTP SERVER
LINUX BOOT TIME OPTIMIZATION FTP SERVER Rahul Tiwari 1, Maulik Patel 2 M.Tech Student (VLSI and EMBEDDED SYSTEM), Dept. of E.C, U.V.Patel college of Engineering, Mehsana, Gujarat, India 1 M.Tech Student
NI Real-Time Hypervisor for Windows
QUICK START GUIDE NI Real-Time Hypervisor Version 2.1 The NI Real-Time Hypervisor provides a platform you can use to develop and run LabVIEW and LabVIEW Real-Time applications simultaneously on a single
Von der Hardware zur Software in FPGAs mit Embedded Prozessoren. Alexander Hahn Senior Field Application Engineer Lattice Semiconductor
Von der Hardware zur Software in FPGAs mit Embedded Prozessoren Alexander Hahn Senior Field Application Engineer Lattice Semiconductor AGENDA Overview Mico32 Embedded Processor Development Tool Chain HW/SW
Setting up IO Python Library on BeagleBone Black
Setting up IO Python Library on BeagleBone Black Created by Justin Cooper Last updated on 2015-01-16 11:15:19 AM EST Guide Contents Guide Contents Overview Installation on Angstrom Commands to setup and
Developing an Application on Core8051s IP-Based Embedded Processor System Using Firmware Catalog Drivers. User s Guide
Developing an Application on Core8051s IP-Based Embedded Processor System Using Firmware Catalog Drivers User s Guide Developing an Application on Core8051s IP-Based Embedded Processor System Using Firmware
Technical Note. Micron NAND Flash Controller via Xilinx Spartan -3 FPGA. Overview. TN-29-06: NAND Flash Controller on Spartan-3 Overview
Technical Note TN-29-06: NAND Flash Controller on Spartan-3 Overview Micron NAND Flash Controller via Xilinx Spartan -3 FPGA Overview As mobile product capabilities continue to expand, so does the demand
The Advanced JTAG Bridge. Nathan Yawn [email protected] 05/12/09
The Advanced JTAG Bridge Nathan Yawn [email protected] 05/12/09 Copyright (C) 2008-2009 Nathan Yawn Permission is granted to copy, distribute and/or modify this document under the terms of the
Quick Start Tutorial. Using the TASKING* Software Development Tools with the Intel 8x930 Family Evaluation Board
Quick Start Tutorial Using the TASKING* Software Development Tools with the Intel 8x930 Family Evaluation Board This explains how to use the TASKING Microsoft* Windows*-based software development tools
DS-5 ARM. Using the Debugger. Version 5.7. Copyright 2010, 2011 ARM. All rights reserved. ARM DUI 0446G (ID092311)
ARM DS-5 Version 5.7 Using the Debugger Copyright 2010, 2011 ARM. All rights reserved. ARM DUI 0446G () ARM DS-5 Using the Debugger Copyright 2010, 2011 ARM. All rights reserved. Release Information The
Q N X S O F T W A R E D E V E L O P M E N T P L A T F O R M v 6. 4. 10 Steps to Developing a QNX Program Quickstart Guide
Q N X S O F T W A R E D E V E L O P M E N T P L A T F O R M v 6. 4 10 Steps to Developing a QNX Program Quickstart Guide 2008, QNX Software Systems GmbH & Co. KG. A Harman International Company. All rights
Waspmote IDE. User Guide
Waspmote IDE User Guide Index Document Version: v4.1-01/2014 Libelium Comunicaciones Distribuidas S.L. INDEX 1. Introduction... 3 1.1. New features...3 1.2. Other notes...3 2. Installation... 4 2.1. Windows...4
Troubleshooting the Firewall Services Module
CHAPTER 25 This chapter describes how to troubleshoot the FWSM, and includes the following sections: Testing Your Configuration, page 25-1 Reloading the FWSM, page 25-6 Performing Password Recovery, page
Linux Driver Devices. Why, When, Which, How?
Bertrand Mermet Sylvain Ract Linux Driver Devices. Why, When, Which, How? Since its creation in the early 1990 s Linux has been installed on millions of computers or embedded systems. These systems may
Troubleshooting the Firewall Services Module
25 CHAPTER This chapter describes how to troubleshoot the FWSM, and includes the following sections: Testing Your Configuration, page 25-1 Reloading the FWSM, page 25-6 Performing Password Recovery, page
CS 377: Operating Systems. Outline. A review of what you ve learned, and how it applies to a real operating system. Lecture 25 - Linux Case Study
CS 377: Operating Systems Lecture 25 - Linux Case Study Guest Lecturer: Tim Wood Outline Linux History Design Principles System Overview Process Scheduling Memory Management File Systems A review of what
Freescale Semiconductor, I
nc. Application Note 6/2002 8-Bit Software Development Kit By Jiri Ryba Introduction 8-Bit SDK Overview This application note describes the features and advantages of the 8-bit SDK (software development
A+ Guide to Software: Managing, Maintaining, and Troubleshooting, 5e. Chapter 3 Installing Windows
: Managing, Maintaining, and Troubleshooting, 5e Chapter 3 Installing Windows Objectives How to plan a Windows installation How to install Windows Vista How to install Windows XP How to install Windows
VIA Fedora Linux Core 8 (x86&x86_64) VT8237R/VT8237A/VT8237S/VT8251/CX700/VX800 V-RAID V3.10 Driver Installation Guide
VIA Fedora Linux Core 8 (x86&x86_64) VT8237R/VT8237A/VT8237S/VT8251/CX700/VX800 V-RAID V3.10 Driver Installation Guide 1. Summary Version 0.8, December 03, 2007 Copyright 2003~2007 VIA Technologies, INC
Block 3 Size 0 KB 0 KB 16KB 32KB. Start Address N/A N/A F4000H F0000H. Start Address FA000H F8000H F8000H F8000H. Block 2 Size 8KB 16KB 16KB 16KB
APPLICATION NOTE M16C/26 1.0 Abstract The following article describes using a synchronous serial port and the FoUSB (Flash-over-USB ) Programmer application to program the user flash memory of the M16C/26
MicroZed I/O Expansion Carrier Card Getting Started Guide
MicroZed I/O Expansion Carrier Card Getting Started Guide Version 1.0 17 December 2013 Copyright 2013, Avnet, Inc. All rights reserved. Published by Avnet Electronics Marketing, a group of Avnet, Inc.
Red Hat Linux Internals
Red Hat Linux Internals Learn how the Linux kernel functions and start developing modules. Red Hat Linux internals teaches you all the fundamental requirements necessary to understand and start developing
UG103.8 APPLICATION DEVELOPMENT FUNDAMENTALS: TOOLS
APPLICATION DEVELOPMENT FUNDAMENTALS: TOOLS This document provides an overview of the toolchain used to develop, build, and deploy EmberZNet and Silicon Labs Thread applications, and discusses some additional
Embedded Display Module EDM6070
Embedded Display Module EDM6070 Atmel AT91SAM9X35 Based Single Board Computer BY Product Overview Version 1.0 Dated: 3 rd Dec 2013 Table of Contents Product Overview... 2 Introduction... 2 Kit Contents...
Building Blocks for PRU Development
Building Blocks for PRU Development Module 1 PRU Hardware Overview This session covers a hardware overview of the PRU-ICSS Subsystem. Author: Texas Instruments, Sitara ARM Processors Oct 2014 2 ARM SoC
Pearl Echo Installation Checklist
Pearl Echo Installation Checklist Use this checklist to enter critical installation and setup information that will be required to install Pearl Echo in your network. For detailed deployment instructions
760 Veterans Circle, Warminster, PA 18974 215-956-1200. Technical Proposal. Submitted by: ACT/Technico 760 Veterans Circle Warminster, PA 18974.
760 Veterans Circle, Warminster, PA 18974 215-956-1200 Technical Proposal Submitted by: ACT/Technico 760 Veterans Circle Warminster, PA 18974 for Conduction Cooled NAS Revision 4/3/07 CC/RAIDStor: Conduction
MVME162P2. VME Embedded Controller with Two IP Slots
MVME162P2 VME Embedded Controller with Two IP Slots [Advantages] [Details] [Specifications] [Ordering Info] [.pdf version ] 25 MHz MC68040 with floating point coprocessor or 25 MHz MC68LC040 High-performance
USB - FPGA MODULE (PRELIMINARY)
DLP-HS-FPGA LEAD-FREE USB - FPGA MODULE (PRELIMINARY) APPLICATIONS: - Rapid Prototyping - Educational Tool - Industrial / Process Control - Data Acquisition / Processing - Embedded Processor FEATURES:
Getting Started with ESXi Embedded
ESXi 4.1 Embedded vcenter Server 4.1 This document supports the version of each product listed and supports all subsequent versions until the document is replaced by a new edition. To check for more recent
Complete Integrated Development Platform. 2013 Copyright Atmel Corporation
Complete Integrated Development Platform 2013 Copyright Atmel Corporation MCU Developer s Challenge 80% increase in SW in next MCU project Top Engineering Concern: Hitting Schedules More complex end user
Survey of Filesystems for Embedded Linux. Presented by Gene Sally CELF
Survey of Filesystems for Embedded Linux Presented by Gene Sally CELF Presentation Filesystems In Summary What is a filesystem Kernel and User space filesystems Picking a root filesystem Filesystem Round-up
PCIe AHCI-IP Demo Instruction Rev1.0 10-Jul-15
PCIe AHCI-IP Demo Instruction Rev1.0 10-Jul-15 This document describes the instruction to show PCIeSSD demo by using SATA AHCI-IP, SATA-IP, and PCIeIP connecting with SATA-III/II SSD on Xilinx evaluation
Nios II Software Developer s Handbook
Nios II Software Developer s Handbook Nios II Software Developer s Handbook 101 Innovation Drive San Jose, CA 95134 www.altera.com NII5V2-13.1 2014 Altera Corporation. All rights reserved. ALTERA, ARRIA,
HotelTV. Client Software Update REV A0.10 D0255. 2014 October. Web : http://support.vestek.com.tr Mail : [email protected] Tel : +90 212 286 01 06
D0255 HotelTV Client Software Update 2014 October 1. Revision History Date Owner Version Reason & Change 11 Oct 2011 Bora Tunçer A0.1 Initial creation 24 Jan 2012 Bora Tunçer A0.2 Adding bootloader update
Linux Embedded devices with PicoDebian Martin Noha 28.9.2006
Embedded systems Linux Embedded devices with PicoDebian Martin Noha 28.9.2006 24.03.2005 1 Agenda Why did I look in this stuff? What is an embedded device? Characteristic hardware global requirements for
ML310 Creating a VxWorks BSP and System Image for the Base XPS Design
ML310 Creating a VxWorks BSP and System Image for the Base XPS Design Note: Screen shots in this acrobat file appear best when Acrobat Magnification is set to 133.3% Outline Software Requirements Software
OpenAMP Framework for Zynq Devices
OpenAMP Framework for Zynq Devices Getting Started Guide Revision History The following table shows the revision history for this document. Date Version Revision 06/23/2016 2015.4 Changed version to match
SmartFusion csoc: Basic Bootloader and Field Upgrade envm Through IAP Interface
Application Note AC372 SmartFusion csoc: Basic Bootloader and Field Upgrade envm Through IAP Interface Table of Contents Introduction................................................ 1 Introduction to Field
Getting Started Guide with WIZ550web
1/21 WIZ550web is an embedded Web server module based on WIZnet s W5500 hardwired TCP/IP chip, Users can control & monitor the 16-configurable digital I/O and 4-ADC inputs on module via web pages. WIZ550web
Intel NetStructure SS7 Protocols SCCP Sub-System Monitor (SSM) User Guide. Document Reference: U28SSS
Intel NetStructure SS7 Protocols SCCP Sub-System Monitor (SSM) User Guide Document Reference: U28SSS Disclaimer The product may contain design defects or errors known as errata, which may cause the product
ARM Cortex -A8 SBC with MIPI CSI Camera and Spartan -6 FPGA SBC1654
ARM Cortex -A8 SBC with MIPI CSI Camera and Spartan -6 FPGA SBC1654 Features ARM Cortex-A8 processor, 800MHz Xilinx Spartan-6 FPGA expands vision processing capabilities Dual MIPI CSI-2 CMOS camera ports,
Update on filesystems for flash storage
JM2L Update on filesystems for flash storage Michael Opdenacker. Free Electrons http://free electrons.com/ 1 Contents Introduction Available flash filesystems Our benchmarks Best choices Experimental filesystems
Buildroot for Vortex86EX (2016/04/20)
Buildroot for Vortex86EX (2016/04/20) Table of Contents Introduction...1 Prepare...1 Install Virtual Machine (optional)...1 Install Buildroot...3 Config Buildroot for VEX-SOM (optional)...4 Generate Linux
Debugging A MotoHawk Application using the Application Monitor
CONTROL SYSTEM SOLUTIONS Debugging A MotoHawk Application using the Application Monitor Author(s): New Eagle Consulting 3588 Plymouth Road, #274 Ann Arbor, MI 48105-2603 Phone: +1 (734) 929-4557 Ben Hoffman
Embedded Linux BSP BootCAMP
Embedded Linux BSP BootCAMP www.aeslab.com www.phytec.in [ Hardware Provider ] www.aeslab.com [email protected] +91-80-41307589 +91-9972039671 Day-1 Training Outlines Day-2 1 st Half: [Get Comfort with ARM
Management Software. Web Browser User s Guide AT-S106. For the AT-GS950/48 Gigabit Ethernet Smart Switch. Version 1.0.0. 613-001339 Rev.
Management Software AT-S106 Web Browser User s Guide For the AT-GS950/48 Gigabit Ethernet Smart Switch Version 1.0.0 613-001339 Rev. A Copyright 2010 Allied Telesis, Inc. All rights reserved. No part of
Utilizing MBARI s Software Infrastructure and Application for MOOS (SIAM) for NOAA s Real-time Environmental Coastal Observing Network (RECON)
Utilizing MBARI s Software Infrastructure and Application for MOOS (SIAM) for NOAA s Real-time Environmental Coastal Observing Network (RECON) Devin A Bonnie, Hope College Mentors: Tom O Reilly, Kent Headley
