Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info

This Page is under Development

Introduction

Briefly describe in general terms the system/application and the purpose for which it is intended, written in non-technical terminology. Consider including a high-level architecture diagram for the system. The description should include, but is not limited to, the following:

...


...

Raspberry Pi: The Raspberry Pi 3 Model B+ featuring a 64-bit quad core processor running at 1.4 Ghz. R-Pi3 B+ supports the dual band 2.4GHz and 5GHz IEEE 802.11.b/g/n/ac wireless LAN which provides an high edge for the broadband developer community to test the RDK-B stack with Router, WiFi functionalities. 

Environment Setup for Emulator and Raspberry Pi

Setting up the Host Environment

Pre-Requisites

Requirement

Remarks

Linux

32 bit Ubuntu 18.04 OS

Fee HDD Space

Minimum 100GB Free Memory

Oracle Virtual Box

4.3.18 or higher

Wireless Adapter

Brand Name:

Tenda ralink & Model Number:W311MI

TPLink Archer T4U AC1200

USB to Ethernet Switch

To connect with Ethernet Switch & Multiple Clients

  Install OS - Ubuntu-18.04

...

Following commands fetch the source code of emulator and raspberry pi using repo tool

$ mkdir emulator or RaspberryPi  && cd emulator or RaspberryPi


Please use the following repo init command 

$ repo init -u https://code.rdkcentral.com/r/manifests -m rdkb.xml -b <branch_name> ( common for both Emulator and Raspberry Pi )

...

$ repo sync -j4 --no-clone-bundle ( common for both Emulator and Raspberry Pi )

Building

For Emulator:


Note
  • Cloning the code before login once to code.rdkcentral.com, user would get the Authentication error, even though the account is in good standing and has all the required access.
  • Please login to code.rdkcentral.com before attempting to clone.


Building

For Emulator:

$ source meta-cmf-bsp-$ source meta-cmf-bsp-emulator/setup-environment

...

$ source meta-cmf-raspberrypi/setup-environment (Select option raspberrypi-rdk-broadband.conf).


Next, you would need to initiate the build using the following command:

...

-             ${HOME}/RaspberryPi/build-raspberrypi-rdk-broadband/tmp/deploy/images/raspberrypi-rdk-broadband/rdkrdkb-generic-broadband-image-raspberrypi-rdk-broadband.rpi-sdimg

Example:

../build-raspberrypi-rdk-broadband/tmp/deploy/images/raspberrypi-rdk-broadband/rdkb-generic-broadband-image_default_20200206062343.rootfs.rpi-sdimg

Executing System

Describe the specific system function or feature in detail and depict graphically by including screen prints and descriptive narrative as appropriate. Ensure each screen print is captioned and has an associated tag providing appropriate alternative text

Follow the above for sub feature / use cases

Troubleshooting

  • Error Messages

<Identify the error messages that a user may receive and the likely cause(s) and/or possible corrective actions for the error>

  • Special Considerations

...

-sdimg


Example:

.../build-raspberrypi-rdk-broadband/tmp/deploy/images/raspberrypi-rdk-broadband/rdkb-generic-broadband-image_default_20200206062343.rootfs.rpi-sdimg

Troubleshooting

Error Messages during bitbake for Emulator and solutions.

Error 1

| /usr/include/x86_64-linux-gnu/bits/mman-shared.h:46:5: note: previous declaration of ‘memfd_create’ was here
| int memfd_create (const char *__name, unsigned int __flags) __THROW;
| ^~~~~~~~~~~~
| /home/amrita/Desktop/Emu_Feb3/build-qemux86broadband/tmp/work/x86_64-linux/qemu-native/2.7.0-r1/qemu-2.7.0/rules.mak:59: recipe for target 'util/memfd.o' failed
| make: *** [util/memfd.o] Error 1
| make: *** Waiting for unfinished jobs....
| /home/amrita/Desktop/Emu_Feb3/build-qemux86broadband/tmp/work/x86_64-linux/qemu-native/2.7.0-r1/qemu-2.7.0/util/path.c: In function ‘follow_path’:
| /home/amrita/Desktop/Emu_Feb3/build-qemux86broadband/tmp/work/x86_64-linux/qemu-native/2.7.0-r1/qemu-2.7.0/util/path.c:126:5: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
| if (!cursor->populated_entries)
| ^~
| /home/amrita/Desktop/Emu_Feb3/build-qemux86broadband/tmp/work/x86_64-linux/qemu-native/2.7.0-r1/qemu-2.7.0/util/path.c:128:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
| cursor = *source;
| ^~~~~~
| WARNING: exit code 1 from a shell command.
| ERROR: Function failed: do_compile (log file is located at /home/amrita/Desktop/Emu_Feb3/build-qemux86broadband/tmp/work/x86_64-linux/qemu-native/2.7.0-r1/temp/log.do_compile.9718)
ERROR: Task (virtual:native:/home/amrita/Desktop/Emu_Feb3/openembedded-core/meta/recipes-devtools/qemu/qemu_2.7.0.bb:do_compile) failed with exit code '1'

Solution:

Remove static keyword in function int memfdcreate in file /x8664-linux/qemu-native/2.7.0-r1/qemu-2.7.0/util/memfd.c

Pictorial representation of changes in memfd.c file:

draw.io Diagram
diagramNameERR1_Emu.drawio
size1200
revision1
         

Patch file for changes in memfd.c attached below:

memfd.patch

Path for changes in memfd.c file:

draw.io Diagram
bordertrue
diagramNamememfd.c pictorial representation
simpleViewerfalse
linksauto
tbstyletop
lboxtrue
diagramWidth121
revision1


Error 2

| /usr/include/gconv.h:26:36: fatal error: bits/types/__mbstate_t.h: No such file or directory
| #include <bits/types/__mbstate_t.h>
| ^
| compilation terminated.
| src/CMakeFiles/ucresolv.dir/build.make:89: recipe for target 'src/CMakeFiles/ucresolv.dir/res_query.c.o' failed
| make[2]: *** [src/CMakeFiles/ucresolv.dir/res_query.c.o] Error 1
| make[2]: Leaving directory '/home/amrita/Desktop/Emu_Feb3/build-qemux86broadband/tmp/work/i586-rdk-linux/ucresolv/git+AUTOINC+996c3778b1-r1/build'
| CMakeFiles/Makefile2:127: recipe for target 'src/CMakeFiles/ucresolv.dir/all' failed
| make[1]: *** [src/CMakeFiles/ucresolv.dir/all] Error 2
| make[1]: Leaving directory '/home/amrita/Desktop/Emu_Feb3/build-qemux86broadband/tmp/work/i586-rdk-linux/ucresolv/git+AUTOINC+996c3778b1-r1/build'
| Makefile:132: recipe for target 'all' failed
| make: *** [all] Error 2
| WARNING: exit code 2 from a shell command.
| ERROR: Function failed: do_compile (log file is located at /home/amrita/Desktop/Emu_Feb3/build-qemux86broadband/tmp/work/i586-rdk-linux/ucresolv/git+AUTOINC+996c3778b1-r1/temp/log.do_compile.29460)
ERROR: Task (/home/amrita/Desktop/Emu_Feb3/meta-rdk-ext/recipes-support/ucresolv/ucresolv_1.0.bb:do_compile) failed with exit code '1'

Solution:

Copy   __mbstate_t.h  file from build-qemux86broadband/tmp/work/i586-rdk-linux/ucresolv/git+AUTOINC+996c3778b1-r1/git/include/wcsmbs/bits/types and put it in build-qemux86broadband/tmp/sysroots/qemux86broadband/usr/include/bits/types

Pictorial representation of changes in ucresolv_1.0.bb file:

draw.io Diagram
diagramNameERR2_Emu.drawio
size1200
revision1


Patch file for changes in ucresolv_1.0.bb attached below:

ucresolv_1.0.patch

Path for changes in ucresolv_1.0.bb file:

draw.io Diagram
bordertrue
diagramName__mbstate_t.h
simpleViewerfalse
linksauto
tbstyletop
lboxtrue
diagramWidth426
revision1


Error 3

In file included from ../../git/debugfs/../misc/create_inode.c:19:0:
| /usr/include/unistd.h:1110:9: note: previous declaration of ‘copy_file_range’ was here
| ssize_t copy_file_range (int __infd, __off64_t *__pinoff,
| ^~~~~~~~~~~~~~~
| Makefile:412: recipe for target 'create_inode.o' failed
| make[2]: *** [create_inode.o] Error 1
| make[2]: *** Waiting for unfinished jobs....
| gcc -c -I. -I../lib -I../../git/lib -isystem/home/amrita/Desktop/Emu_Feb3/build-qemux86broadband/tmp/sysroots/x86_64-linux/usr/include -isystem/home/amrita/Desktop/Emu_Feb3/build-qemux86broadband/tmp/sysroots/x86_64-linux/usr/include -O2 -pipe -DHAVE_CONFIG_H -I../../git/debugfs/../e2fsck -DDEBUGFS ../../git/debugfs/xattrs.c -o xattrs.o
| make[2]: Leaving directory '/home/amrita/Desktop/Emu_Feb3/build-qemux86broadband/tmp/work/x86_64-linux/e2fsprogs-native/1.43-r1/build/debugfs'
| Makefile:399: recipe for target 'all-progs-recursive' failed
| make[1]: *** [all-progs-recursive] Error 1
| make[1]: Leaving directory '/home/amrita/Desktop/Emu_Feb3/build-qemux86broadband/tmp/work/x86_64-linux/e2fsprogs-native/1.43-r1/build'
| Makefile:334: recipe for target 'all' failed
| make: *** [all] Error 2
| ERROR: Function failed: do_compile (log file is located at /home/amrita/Desktop/Emu_Feb3/build-qemux86broadband/tmp/work/x86_64-linux/e2fsprogs-native/1.43-r1/temp/log.do_compile.21571)
ERROR: Task (virtual:native:/home/amrita/Desktop/Emu_Feb3/openembedded-core/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.43.bb:do_compile) failed with exit code '1'

Solution:

Change copy_file_range to copy_file_chunk in x86_64-linux/e2fsprogs-native/1.43-r1/git/misc/create_inode.c

Pictorial representation of changes in create_inode.c file:

draw.io Diagram
diagramNameERR3_Emu.drawio
size1200
revision1

Patch file for changes in create_inode.c attached below:

create_inode.patch

Path for changes in create_inode.c file:

draw.io Diagram
bordertrue
diagramNameCreate_inode.c
simpleViewerfalse
linksauto
tbstyletop
lboxtrue
diagramWidth121
revision1


Error Messages during bitbake for Raspberry Pi and solutions.

Error 1

/home/amrita/Desktop/Rpi_Jan31/build-raspberrypi-rdk-broadband/tmp/work/x86_64-linux/qemu-native/2.7.0-r1/qemu-2.7.0/util/memfd.c:40:12: error: static declaration of ‘memfd_create’ follows non-static declaration
| static int memfd_create(const char *name, unsigned int flags)
| ^~~~~~~~~~~~
| In file included from /usr/include/x86_64-linux-gnu/bits/mman-linux.h:115:0,
| from /usr/include/x86_64-linux-gnu/bits/mman.h:45,
| from /usr/include/x86_64-linux-gnu/sys/mman.h:41,
| from /home/amrita/Desktop/Rpi_Jan31/build-raspberrypi-rdk-broadband/tmp/work/x86_64-linux/qemu-native/2.7.0-r1/qemu-2.7.0/include/sysemu/os-posix.h:29,
| from /home/amrita/Desktop/Rpi_Jan31/build-raspberrypi-rdk-broadband/tmp/work/x86_64-linux/qemu-native/2.7.0-r1/qemu-2.7.0/include/qemu/osdep.h:104,
| from /home/amrita/Desktop/Rpi_Jan31/build-raspberrypi-rdk-broadband/tmp/work/x86_64-linux/qemu-native/2.7.0-r1/qemu-2.7.0/util/memfd.c:28:
| /usr/include/x86_64-linux-gnu/bits/mman-shared.h:46:5: note: previous declaration of ‘memfd_create’ was here
| int memfd_create (const char *__name, unsigned int __flags) __THROW;
| ^~~~~~~~~~~~
| /home/amrita/Desktop/Rpi_Jan31/build-raspberrypi-rdk-broadband/tmp/work/x86_64-linux/qemu-native/2.7.0-r1/qemu-2.7.0/rules.mak:59: recipe for target 'util/memfd.o' failed
| make: *** [util/memfd.o] Error 1
| make: *** Waiting for unfinished jobs....
| ERROR: Function failed: do_compile (log file is located at /home/amrita/Desktop/Rpi_Jan31/build-raspberrypi-rdk-broadband/tmp/work/x86_64-linux/qemu-native/2.7.0-r1/temp/log.do_compile.19600)
ERROR: Task (virtual:native:/home/amrita/Desktop/Rpi_Jan31/openembedded-core/meta/recipes-devtools/qemu/qemu_2.7.0.bb:do_compile) failed with exit code '1'

Solution:

Removed static keyword in function int memfd_create in file /x86_64-linux/qemu-native/2.7.0-r1/qemu-2.7.0/util/memfd.c

Pictorial representation of changes in memfd.c file:

draw.io Diagram
diagramNameERR1_Emu.drawio
size1200
revision1

Patch file for changes in memfd.c attached below:

memfd.patch

Path for changes in memfd.c file:

draw.io Diagram
bordertrue
diagramName__mbstate_t.h Rpi
simpleViewerfalse
linksauto
tbstyletop
lboxtrue
diagramWidth121
revision1


Error 2

/usr/include/gconv.h:26:36: fatal error: bits/types/__mbstate_t.h: No such file or directory
| #include <bits/types/__mbstate_t.h>
| ^
| compilation terminated.
| src/CMakeFiles/ucresolv.shared.dir/build.make:137: recipe for target 'src/CMakeFiles/ucresolv.shared.dir/res_send.c.o' failed
| make[2]: *** [src/CMakeFiles/ucresolv.shared.dir/res_send.c.o] Error 1
| make[2]: Leaving directory '/home/amrita/Desktop/Rpi_Jan31/build-raspberrypi-rdk-broadband/tmp/work/cortexa7t2hf-neon-vfpv4-rdk-linux-gnueabi/ucresolv/git+AUTOINC+996c3778b1-r1/build'
| CMakeFiles/Makefile2:90: recipe for target 'src/CMakeFiles/ucresolv.shared.dir/all' failed
| make[1]: *** [src/CMakeFiles/ucresolv.shared.dir/all] Error 2
| make[1]: Leaving directory '/home/amrita/Desktop/Rpi_Jan31/build-raspberrypi-rdk-broadband/tmp/work/cortexa7t2hf-neon-vfpv4-rdk-linux-gnueabi/ucresolv/git+AUTOINC+996c3778b1-r1/build'
| Makefile:132: recipe for target 'all' failed
| make: *** [all] Error 2
| WARNING: exit code 2 from a shell command.
| ERROR: Function failed: do_compile (log file is located at /home/amrita/Desktop/Rpi_Jan31/build-raspberrypi-rdk-broadband/tmp/work/cortexa7t2hf-neon-vfpv4-rdk-linux-gnueabi/ucresolv/git+AUTOINC+996c3778b1-r1/temp/log.do_compile.6585)
ERROR: Task (/home/amrita/Desktop/Rpi_Jan31/meta-rdk-ext/recipes-support/ucresolv/ucresolv_1.0.bb:do_compile) failed with exit code '1'

Solution:

Copy  __mbstate_t.h file from cortexa7t2hf-neon-vfpv4-rdk-linux-gnueabi/ucresolv/git+AUTOINC+b58d49e165-r1/git/include/wcsmbs/bits/types and put it in build-raspberrypi-rdk-broadband/tmp/sysroots/raspberrypi-rdk-broadband/usr/include/bits/types/

Patch file for changes in ucresolv_1.0.bb attached below:

draw.io Diagram
diagramNameERR2_Emu.drawio
size1200
revision1

ucresolv_1.0.patch

Path for changes in ucresolv_1.0.bb file:

draw.io Diagram
bordertrue
diagramNameUcresolve
simpleViewerfalse
linksauto
tbstyletop
lboxtrue
diagramWidth401
revision1



Error 3

In file included from ../../git/debugfs/../misc/create_inode.c:19:0:
| /usr/include/unistd.h:1110:9: note: previous declaration of ‘copy_file_range’ was here
| ssize_t copy_file_range (int __infd, __off64_t *__pinoff,
| ^~~~~~~~~~~~~~~
| Makefile:412: recipe for target 'create_inode.o' failed
| make[2]: *** [create_inode.o] Error 1
| make[2]: *** Waiting for unfinished jobs....
| make[2]: Leaving directory '/home/amrita/Desktop/Rpi_Jan31/build-raspberrypi-rdk-broadband/tmp/work/x86_64-linux/e2fsprogs-native/1.43-r1/build/debugfs'
| Makefile:399: recipe for target 'all-progs-recursive' failed
| make[1]: *** [all-progs-recursive] Error 1
| make[1]: Leaving directory '/home/amrita/Desktop/Rpi_Jan31/build-raspberrypi-rdk-broadband/tmp/work/x86_64-linux/e2fsprogs-native/1.43-r1/build'
| Makefile:334: recipe for target 'all' failed
| make: *** [all] Error 2
| WARNING: exit code 1 from a shell command.
| ERROR: Function failed: do_compile (log file is located at /home/amrita/Desktop/Rpi_Jan31/build-raspberrypi-rdk-broadband/tmp/work/x86_64-linux/e2fsprogs-native/1.43-r1/temp/log.do_compile.11514)
ERROR: Task (virtual:native:/home/amrita/Desktop/Rpi_Jan31/openembedded-core/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.43.bb:do_compile) failed with exit code '1'

Solution:

Change copy_file_range to copy_file_chunk in x86_64-linux/e2fsprogs-native/1.43-r1/git/misc/create_inode.c

Pictorial representation of changes in create_inode.c file:

draw.io Diagram
diagramNameERR3_Emu.drawio
size1200
revision1

Patch file for changes in create_inode.c attached below:

create_inode.patch

Path for changes in create_inode.c file:

draw.io Diagram
bordertrue
diagramNameCreate_inode.c
simpleViewerfalse
linksauto
tbstyletop
lboxtrue
diagramWidth121
revision1

Special Considerations

Error

/home/amrita/Desktop/Emu_Feb3/build-raspberrypi3-64-rdk-broadband/tmp/work/x86_64-linux/qemu-native/2.7.0-r1/qemu-2.7.0/rules.mak:59: recipe for target 'util/memfd.o' failed
| make: *** [util/memfd.o] Error 1
| make: *** Waiting for unfinished jobs....
| /home/amrita/Desktop/Emu_Feb3/build-raspberrypi3-64-rdk-broadband/tmp/work/x86_64-linux/qemu-native/2.7.0-r1/qemu-2.7.0/util/path.c: In function ‘follow_path’:
| /home/amrita/Desktop/Emu_Feb3/build-raspberrypi3-64-rdk-broadband/tmp/work/x86_64-linux/qemu-native/2.7.0-r1/qemu-2.7.0/util/path.c:126:5: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
| if (!cursor->populated_entries)
| ^~
| /home/amrita/Desktop/Emu_Feb3/build-raspberrypi3-64-rdk-broadband/tmp/work/x86_64-linux/qemu-native/2.7.0-r1/qemu-2.7.0/util/path.c:128:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
| cursor = *source;
| ^~~~~~
| WARNING: /home/amrita/Desktop/Emu_Feb3/build-raspberrypi3-64-rdk-broadband/tmp/work/x86_64-linux/qemu-native/2.7.0-r1/temp/run.do_compile.8435:1 exit 1 from 'exit 1'
| ERROR: Function failed: do_compile (log file is located at /home/amrita/Desktop/Emu_Feb3/build-raspberrypi3-64-rdk-broadband/tmp/work/x86_64-linux/qemu-native/2.7.0-r1/temp/log.do_compile.8435)
ERROR: Task (virtual:native:/home/amrita/Desktop/Emu_Feb3/openembedded-core/meta/recipes-devtools/qemu/qemu_2.7.0.bb:do_compile) failed with exit code '1'

Solution:

Removed   1. #ifdef CONFIG_MEMFD    2. #include <sys/memfd.h>    3. #elif defined CONFIG_LINUX  and added  1.#include <sys/mman.h>    2.#if defined CONFIG_LINUX && !defined CONFIG_MEMFD in    /x86_64-linux/qemu-native/2.7.0-r1/qemu-2.7.0/util/memfd.c

Pictorial representation of changes in memfd.c file:

draw.io Diagram
diagramNameERR4.drawio
size1200
revision1

Patch file for changes in memfd.c attached below:

memfd.patch

Path for changes in memfd.c file:

draw.io Diagram
bordertrue
diagramNameMem
simpleViewerfalse
linksauto
tbstyletop
lboxtrue
diagramWidth241
revision1


Support

Contact

Organization

Phone

Email

Role

Rajkumar Narayanan

L&T Technology Services

Nill

rajkumar.narayanan@ltts.com

Program Manager

<Contact Name>

<Organization>

<Phone>

<Email>

<Role>