openwrt/target/linux/layerscape
Yangbo Lu f0ec7bd27d layerscape: add armv7 subtarget and ls1021atwr board support
The NXP TWR-LS1021A module is a development system based
on the QorIQ LS1021A processor.
- This feature-rich, high-performance processor module can
  be used standalone or as part of an assembled Tower System
  development platform.
- Incorporating dual Arm Cortex-A7 cores running up to 1 GHz,
  the TWR-LS1021A delivers an outstanding level of performance.
- The TWR-LS1021A offers HDMI, SATA3 and USB3 connectors as
  well as a complete Linux software developer's package.
- The module provides a comprehensive level of security that
  includes support for secure boot, Trust Architecture and
  tamper detection in both standby and active power modes,
  safeguarding the device from manufacture to deployment.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
2018-09-22 21:20:57 +02:00
..
armv7 layerscape: add armv7 subtarget and ls1021atwr board support 2018-09-22 21:20:57 +02:00
armv8_32b layerscape: update linux 4.9 patches to LSDK-18.06 2018-09-22 21:20:57 +02:00
armv8_64b layerscape: update linux 4.9 patches to LSDK-18.06 2018-09-22 21:20:57 +02:00
base-files layerscape: add Traverse LS1043-S support 2018-07-30 10:53:57 +02:00
files/arch/arm64/boot/dts/freescale treewide: fix some cosmetic glitches in dts files 2018-08-27 19:31:17 +02:00
image layerscape: add armv7 subtarget and ls1021atwr board support 2018-09-22 21:20:57 +02:00
patches-4.9 layerscape: update linux 4.9 patches to LSDK-18.06 2018-09-22 21:20:57 +02:00
Makefile layerscape: add armv7 subtarget and ls1021atwr board support 2018-09-22 21:20:57 +02:00
modules.mk layerscape: fix pfe module autoload issue 2017-11-10 23:00:50 +01:00
README layerscape: add a make menuconfig known issue in README 2018-02-13 10:01:51 +01:00

Layerscape Quick Start

1. Layerscape target support
----------------------------
* ARMv8 64-bit
  LS1012ARDB LS1012AFRDM LS1043ARDB LS1046ARDB LS1088ARDB LS2088ARDB

* ARMv8 32-bit
  LS1012ARDB LS1012AFRDM LS1043ARDB LS1046ARDB


2. Build
--------
Before configuration and build, update and install package feeds.

$ ./scripts/feeds update -a
$ ./scripts/feeds install -a

2.1 make menuconfig
-------------------
* For single device

  Target System:   "NXP Layerscape".
  Subtarget:       "ARMv8 64-bit based boards" or "ARMv8 32-bit based boards"
  Target Profile:  (select device you want to build)

  For example, build firmware for 64-bit ls1043ardb.
  +---------------------------------------------+
  | Target System (NXP Layerscape)  --->        |
  |---------------------------------------------|
  | Subtarget (ARMv8 64-bit based boards)  ---> |
  |---------------------------------------------|
  | Target Profile (ls1043ardb-armv8_64b)  ---> |
  +---------------------------------------------+

* For multiple devices

  Target System:   "NXP Layerscape".
  Subtarget:       "ARMv8 64-bit based boards" or "ARMv8 32-bit based boards"
  Target Profile:  "Multiple devices"
  Target Devices:  (select devices you want to build)

  For example, build firmware for all 64-bit devices.
  Target Devices  --->
  +-----------------------------------------------------------------+
  | [*] Enable all profiles by default                              |
  |-----------------------------------------------------------------|
  | [*] Use a per-device root filesystem that adds profile packages |
  |-----------------------------------------------------------------|
  | [*] ls1012afrdm-armv8_64b  --->                                 |
  |-----------------------------------------------------------------|
  | [*] ls1012ardb-armv8_64b  --->                                  |
  |-----------------------------------------------------------------|
  | [*] ls1043ardb-armv8_64b  --->                                  |
  |-----------------------------------------------------------------|
  | [*] ls1046ardb-armv8_64b  --->                                  |
  |-----------------------------------------------------------------|
  | [*] ls1088ardb-armv8_64b  --->                                  |
  |-----------------------------------------------------------------|
  | [*] ls2088ardb-armv8_64b  --->                                  |
  +-----------------------------------------------------------------+

Note: The first time make menuconfig would create a .config file which
would include all dependencies for selected target. After that, make
menuconfig still could be used to modify packages. If want to change
other target, please remove .config and make menuconfig to select again.
Otherwise the packages selected in .config would be a mess.

2.2 make (or make -j<n>)
------------------------

2.3 Final firmware
------------------
Final firmware would be in bin/targets/layerscape/<subtarget>/, and
named as openwrt-layerscape-<subtarget>-<device>-<rootfs>-firmware.bin.


3. Program firmware to NOR/QSPI flash
-------------------------------------
* LS1043ARDB (NOR flash)

  Start up from bank0, and program firmware to bank4 with below commands.
  Switch to bank4 to start up OpenWrt.

  => tftp a0000000 <firmware_name>.bin
  => protect off all
  => erase 64000000 +$filesize
  => cp.b a0000000 64000000 $filesize
  => cpld reset altbank

* LS2088ARDB (NOR flash)

  Start up from bank0, and program firmware to bank4 with below commands.
  Switch to bank4 to start up OpenWrt.

  => tftp a0000000 <firmware_name>.bin
  => protect off all
  => erase 584000000 +$filesize
  => cp.b a0000000 584000000 $filesize
  => qix altbank

* LS1012ARDB (QSPI flash)

  Start up from bank1, and program firmware to bank2 with below commands.
  Switch to bank2 to start up OpenWrt.

  => tftp a0000000 <firmware_name>.bin
  => i2c mw 0x24 0x7 0xfc;i2c mw 0x24 0x3 0xf5
  => sf probe 0:0
  => sf erase 0 +$filesize
  => sf write a0000000 0 $filesize
  => reset

* LS1012AFRDM (QSPI flash)

  LS1012AFRDM board only has one bank. Start up board, and program firmware
  with below commands. Reset to start up OpenWrt.

  => tftp 96000000 <firmware_name>.bin
  => sf probe 0:0
  => sf erase 0 +$filesize
  => sf write 96000000 0 $filesize
  => reset

* LS1046ARDB (QSPI flash)

  Start up from bank1, and program firmware to bank2 with below commands.
  Switch to bank2 to start up OpenWrt.

  => tftp a0000000 <firmware_name>.bin
  => sf probe 0:1
  => sf erase 0 +$filesize
  => sf write a0000000 0 $filesize
  => cpld reset altbank

* LS1088ARDB (QSPI flash)

  Start up from bank0, and program firmware to bank1 with below commands.
  Switch to bank1 to start up OpenWrt.

  => tftp a0000000 <firmware_name>.bin
  => sf probe 0:1
  => sf erase 0 +$filesize
  => sf write a0000000 0 $filesize
  => qix altbank

  Note: old version u-boot of ls1088ardb may use below commands to switch to
  bank1 instead of 'qix altbank'.
  => i2c mw 66 50 20;i2c mw 66 10 20;i2c mw 66 10 21


4. Known issues and limitation
------------------------------
* u-boot may fail to read MAC addresses from EEPROM on some boards and there
  won't be MAC addresses set in environment. This may cause kernel fails to
  probe these network interfaces. The workaround is to set MAC addresses
  manually, for example,

  => setenv ethaddr 00:04:9F:04:65:4b
  => setenv eth1addr 00:04:9F:04:65:4c


5. Other references and sources
-------------------------------
- NXP LSDK site: https://lsdk.github.io/

- NXP LSDK github: https://github.com/qoriq-open-source

- LEDE documentation: https://lede-project.org/docs/start