123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- Summary
- =======
- This README is about U-Boot support for TI's ARM Cortex-A8 based OMAP3 [1]
- family of SoCs. TI's OMAP3 SoC family contains an ARM Cortex-A8. Additionally,
- some family members contain a TMS320C64x+ DSP and/or an Imagination SGX 2D/3D
- graphics processor and various other standard peripherals.
- Currently the following boards are supported:
- * OMAP3530 BeagleBoard [2]
- * Gumstix Overo [3]
- * TI EVM [4]
- * OpenPandora Ltd. Pandora [5]
- * TI/Logic PD Zoom MDK [6]
- * TI/Logic PD Zoom 2 [7]
- * CompuLab Ltd. CM-T35 [8]
- Toolchain
- =========
- While ARM Cortex-A8 support ARM v7 instruction set (-march=armv7a) we compile
- with -march=armv5 to allow more compilers to work. For U-Boot code this has
- no performance impact.
- Build
- =====
- * BeagleBoard:
- make omap3_beagle_config
- make
- * Gumstix Overo:
- make omap3_overo_config
- make
- * TI EVM:
- make omap3_evm_config
- make
- * Pandora:
- make omap3_pandora_config
- make
- * Zoom MDK:
- make omap3_zoom1_config
- make
- * Zoom 2:
- make omap3_zoom2_config
- make
- * CM-T35:
- make cm_t35_config
- make
- Custom commands
- ===============
- To make U-Boot for OMAP3 support NAND device SW or HW ECC calculation, U-Boot
- for OMAP3 supports custom user command
- nandecc hw/sw
- To be compatible with NAND drivers using SW ECC (e.g. kernel code)
- nandecc sw
- enables SW ECC calculation. HW ECC enabled with
- nandecc hw
- is typically used to write 2nd stage bootloader (known as 'x-loader') which is
- executed by OMAP3's boot rom and therefore has to be written with HW ECC.
- For all other commands see
- help
- Interfaces
- ==========
- gpio
- ----
- To set a bit :
- if (!gpio_request(N, "")) {
- gpio_direction_output(N, 0);
- gpio_set_value(N, 1);
- }
- To clear a bit :
- if (!gpio_request(N, "")) {
- gpio_direction_output(N, 0);
- gpio_set_value(N, 0);
- }
- To read a bit :
- if (!gpio_request(N, "")) {
- gpio_direction_input(N);
- val = gpio_get_value(N);
- gpio_free(N);
- }
- if (val)
- printf("GPIO N is set\n");
- else
- printf("GPIO N is clear\n");
- dma
- ---
- void omap3_dma_init(void)
- Init the DMA module
- int omap3_dma_get_conf_chan(uint32_t chan, struct dma4_chan *config);
- Read config of the channel
- int omap3_dma_conf_chan(uint32_t chan, struct dma4_chan *config);
- Write config to the channel
- int omap3_dma_conf_transfer(uint32_t chan, uint32_t *src, uint32_t *dst,
- uint32_t sze)
- Config source, destination and size of a transfer
- int omap3_dma_wait_for_transfer(uint32_t chan)
- Wait for a transfer to end - this hast to be called before a channel
- or the data the channel transferd are used.
- int omap3_dma_get_revision(uint32_t *minor, uint32_t *major)
- Read silicon Revision of the DMA module
- NAND
- ====
- There are some OMAP3 devices out there with NAND attached. Due to the fact that
- OMAP3 ROM code can only handle 1-bit hamming ECC for accessing first page
- (place where SPL lives) we require this setup for u-boot at least when reading
- the second progam within SPL. A lot of newer NAND chips however require more
- than 1-bit ECC for the pages, some can live with 1-bit for the first page. To
- handle this we can switch to another ECC algorithm after reading the payload
- within SPL.
- BCH8
- ----
- To enable hardware assisted BCH8 (8-bit BCH [Bose, Chaudhuri, Hocquenghem]) on
- OMAP3 devices we can use the BCH library in lib/bch.c. To do so add CONFIG_BCH
- and set CONFIG_NAND_OMAP_ECCSCHEME=5 (refer README.nand) for selecting BCH8_SW.
- The NAND OOB layout is the same as in linux kernel, if the linux kernel BCH8
- implementation for OMAP3 works for you so the u-boot version should also.
- When you require the SPL to read with BCH8 there are two more configs to
- change:
- * CONFIG_SYS_NAND_ECCPOS (must be the same as .eccpos in
- GPMC_NAND_HW_BCH8_ECC_LAYOUT defined in
- arch/arm/include/asm/arch-omap3/omap_gpmc.h)
- * CONFIG_SYS_NAND_ECCSIZE must be 512
- * CONFIG_SYS_NAND_ECCBYTES must be 13 for this BCH8 setup
- Acknowledgements
- ================
- OMAP3 U-Boot is based on U-Boot tar ball [9] for BeagleBoard and EVM done by
- several TI employees.
- Links
- =====
- [1] OMAP3:
- http://www.ti.com/omap3 (high volume) and
- http://www.ti.com/omap35x (broad market)
- [2] OMAP3530 BeagleBoard:
- http://beagleboard.org/
- [3] Gumstix Overo:
- http://www.gumstix.net/Overo/
- [4] TI EVM:
- http://focus.ti.com/docs/toolsw/folders/print/tmdxevm3503.html
- [5] OpenPandora Ltd. Pandora:
- http://openpandora.org/
- [6] TI/Logic PD Zoom MDK:
- http://www.logicpd.com/products/devkit/ti/zoom_mobile_development_kit
- [7] TI/Logic PD Zoom 2
- http://www.logicpd.com/sites/default/files/1012659A_Zoom_OMAP34x-II_MDP_Brief.pdf
- [8] CompuLab Ltd. CM-T35:
- http://www.compulab.co.il/t3530/html/t3530-cm-datasheet.htm
- [9] TI OMAP3 U-Boot:
- http://beagleboard.googlecode.com/files/u-boot_beagle_revb.tar.gz
|