Enable L4Linux network access on Raspberry Pi-b.

Lei Zhou lezhou at blackberry.com
Fri Jun 21 00:43:57 CEST 2019


Hi Adam & Hackers,

Has anybody enabled network access for L4linux Raspberry pi3?     I read through all the history on related topics and understand the process to get it working.  I summarized the steps as below and major problem for me is how to convert device tree for L4linux and compose corresponding rpi_deices.io configuration.   Please see my specific question inlined in those steps.    Thanks in advance for your feedback.

1.  configure and Compile l4linux to support flattened device tree support.  Also enables 
           CONFIG_USB_LAN78XX=y  &&                                                   
           CONFIG_USB_USBNET=y 
           CONFIG_USB_NET_SMSC95XX=y
           CONFIG_L4_SERVER = y
           CONFIG_USE_OF = y
2. Adapt https://github.com/raspberrypi/linux/blob/rpi-4.19.y/arch/arm/boot/dts/bcm2710-rpi-3-b.dts into ./l4linux/arch/l4/boot/dts/simple.dts
   [Lei's question]:  I understand why  bcm2710-rpi-3-b.dts cannot be used directly because some of the reg_address physical address doesn't apply and might fail to be mapped.   How can I pick network access specific device nodes and its dependancies(power or clock etc) and how to change those illegal reg_address?      

3. Create an rpi3_devices.io for L4Re with the devices and their resources and assign the desired devices to a vbus.
    [Lei's question]:  Should I define all device nodes one-2-one mapping from step 2's device tree? 

4. Update your ned script and modules.list

-- vim:set ft=lua:                                                              
                                                                                
local L4 = require("L4");                                                       
                                                                                
loader = L4.default_loader;                                                     
                                                                                
-- Start io                                                                     
vbus_l4linux = loader:new_channel();                                            
--vbus_input   = loader:new_channel();                                          
--vbus_fbdrv   = loader:new_channel();                                          
                                                                                
loader:start(                                                                   
  {                                                                             
    caps = {                                                                    
      sigma0  = L4.cast(L4.Proto.Factory, L4.Env.sigma0):create(L4.Proto.Sigma0);
      icu     = L4.Env.icu;                                                     
      -- input   = vbus_input:svr();                                            
      l4linux = vbus_l4linux:svr();                                             
      -- fbdrv   = vbus_fbdrv:svr();                                            
    },                                                                          
      log = {"IO", "y"},                                                        
      l4re_dbg = L4.Dbg.Warn,                                                   
  }, "rom/io -vvv rom/rpi_devices.io");                                         
                                                                                
-- Start L4linux                                                                
loader:start(                                                                   
   {                                                                            
      caps = {                                                                  
         -- fb  = mag_svc:create(L4.Proto.Goos, "g=640x480");                   
         vbus = vbus_l4linux;                                                   
      },                                                                        
      log = L4.Env.log:m("rws"),                                                
      l4re_dbg = L4.Dbg.Warn,                                                   
   },                                                                           
   "rom/vmlinuz mem=64M console=ttyLv0 l4x_rd=rom/ramdisk- l4x_dtb=rom/rpi3b-simple.dtb"
    .. L4.Info.arch() .. ".rd " ..                                              
    "root=1:0 ramdisk_size=4000 init=/bin/sh earlyprintk=1 "); 

5. Build final bootstrap_l4linux.uimage for Raspberry.

Thanks very much!
Lei Zhou


More information about the l4-hackers mailing list