[U-Boot] [PATCH 0/3] drivers/sandbox: Introduce a simplified remoteproc framework

Nishanth Menon nm at ti.com
Mon Aug 24 19:28:34 CEST 2015


Hi,

Many System on Chip(SoC) solutions are complex with multiple
processors on the same die dedicated to either general purpose of
specialized functions. Many examples do exist in today's SoCs from
various vendors. Typical examples are micro controllers such as an ARM
M3/M0 doing a offload of specific function such as event integration
or power management or controlling camera etc.

Traditionally, the responsibility of loading up such a processor with
a firmware and communication has been with a High Level Operating
System(HLOS) such as Linux. However, there exists classes of products
where Linux would need to expect services from such a processor or
the delay of Linux and operating system being able to load up such a
firmware is unacceptable.

The intent here is to introduce a simplified remoteproc framework
which can then be used to provide basic services to these remote
processors.

Nishanth Menon (3):
  drivers: Introduce a simplified remoteproc framework
  remoteproc: Introduce a sandbox dummy driver
  sandbox: Introduce dummy remoteproc nodes

 arch/sandbox/dts/test.dts                          |  13 +
 common/Kconfig                                     |   5 +
 common/Makefile                                    |   1 +
 common/cmd_remoteproc.c                            | 224 ++++++++++++
 configs/sandbox_defconfig                          |   2 +
 doc/device-tree-bindings/remoteproc/remoteproc.txt |  14 +
 doc/driver-model/remoteproc-framework.txt          | 163 +++++++++
 drivers/Kconfig                                    |   2 +
 drivers/Makefile                                   |   1 +
 drivers/remoteproc/Kconfig                         |  24 ++
 drivers/remoteproc/Makefile                        |  10 +
 drivers/remoteproc/rproc-uclass.c                  | 406 +++++++++++++++++++++
 drivers/remoteproc/sandbox_testproc.c              | 243 ++++++++++++
 include/dm/uclass-id.h                             |   1 +
 include/remoteproc.h                               |  81 ++++
 15 files changed, 1190 insertions(+)
 create mode 100644 common/cmd_remoteproc.c
 create mode 100644 doc/device-tree-bindings/remoteproc/remoteproc.txt
 create mode 100644 doc/driver-model/remoteproc-framework.txt
 create mode 100644 drivers/remoteproc/Kconfig
 create mode 100644 drivers/remoteproc/Makefile
 create mode 100644 drivers/remoteproc/rproc-uclass.c
 create mode 100644 drivers/remoteproc/sandbox_testproc.c
 create mode 100644 include/remoteproc.h

Simple test with test.dtb:
u-boot$ ./u-boot -d ./arch/sandbox/dts/test.dtb


U-Boot 2015.10-rc2-00067-g05997426fef2 (Aug 24 2015 - 17:23:58 +0000)

DRAM:  128 MiB
Using default environment

In:    serial
Out:   lcd
Err:   lcd
Net:   Net Initialization Skipped
eth0: eth at 10002000, eth5: eth at 10003000, eth1: eth at 10004000
=> help rproc
rproc - Control operation of remote processors in an SoC

Usage:
rproc  [init|list|load|start|stop|reset|ping]
		 Where:
		[addr] is a memory address
		<id> is a numerical identifier for the remote processor
		     provided by 'list' command.
		Note: Remote processors must be initalized prior to usage
		Note: Services are dependent on the driver capability
		      'list' command shows the capability of each device

	Subcommands:
	init   - Enumerate and initalize the remote processors
	list   - list available remote processors
	load <id> [addr] [size]- Load the remote processor with binary
			  image stored at address [addr] in memory
	start <id>	- Start the remote processor(must be loaded)
	stop <id>	- Stop the remote processor
	reset <id>	- Reset the remote processor
	is_running <id> - Reports if the remote processor is running
	ping <id>	- Ping the remote processor for communication

=> rproc init
=> rproc list
0 - Name:'proc_3_legacy' type:'internal memory mapped' supports: load start stop reset is_running ping 
1 - Name:'remoteproc-test-dev1' type:'internal memory mapped' supports: load start stop reset is_running ping 
2 - Name:'remoteproc-test-dev2' type:'internal memory mapped' supports: load start stop reset is_running ping 
=> rproc load 0 1 2  
Loading to 'proc_3_legacy' from address 0x00000001 size of 2 bytes
=> rproc ping 0
Pinging proc_3_legacy...
proc_3_legacy: No response.(Not started?)
=> rproc start 0
Starting proc_3_legacy...
=> rproc is_running 0
Checking if running: proc_3_legacy...
Remote processor is Running
=> rproc ping 0
Pinging proc_3_legacy...
Remote processor responds 'Pong'
=> rproc ping 1
Pinging remoteproc-test-dev1...
remoteproc-test-dev1: No response.(Not started?)
=> rproc is_running 1
Checking if running: remoteproc-test-dev1...
Remote processor is NOT Running
=> 

-- 
2.1.4



More information about the U-Boot mailing list