RTEMS+Cexp+GeSys

Anton Derbenev aaderbenev at gmail.com
Fri May 4 17:19:06 UTC 2018


Hello Gedare,

alas, given that I believe in all the infrastructure with how things boot
well for our existing 4.9 setup, I couldn't get much conclusive clue on how
to coax the startup script be found and run for the new assembly. I recall
my last attempt was to giving it a shot with 4.12 instead, at which point I
ran into some sources not being available where they should be, and diving
into that...

Indeed thanks to Heinz for his input, he was working on putting cexp/gesys
in rtemsInit - I wonder how it turned out. Also, perhaps someone has a
procedure for RTEMS+Cexp+GeSys on 4.12? Or, well, 4.10? It shouldn't be too
much of a rocket science I presume, but when rtems-source-builder fails to
download something and I have to fix location, or for whatever reason a
dependency version ends up being odd which results in an error much later
in the process... if only there was a comprehensive procedure. I tried to
make my process as detailed as possible, but it didn't just work when
trying same steps for 4.12.

Anton.


On Fri, May 4, 2018 at 10:38 AM, Gedare Bloom <gedare at rtems.org> wrote:

> Sorry, I just found that Heinz actually also replied to this back in
> december, but in the digest form. :)  **slowly working my way through
> email backlog for spring semester /sigh/*
>
> On Fri, May 4, 2018 at 10:36 AM, Gedare Bloom <gedare at rtems.org> wrote:
> > Hello Anton,
> >
> > On Wed, Dec 13, 2017 at 9:13 PM, Anton Derbenev <aaderbenev at gmail.com>
> wrote:
> >> Hello all,
> >>
> >> at NSLS-II, we have several dozen MVME3100 VME crates running RTEMS with
> >> EPICS driver for various diagnostics and MRF timing hardware. The entire
> >> setup was handily created quite some time ago by combining RTEMS 4.9
> with
> >> Cexp and GeSys to provide convenient booting and debugging
> capabilities. As
> >> an effort to make the setup more up-to-date, I made an attempt to
> compose a
> >> how-to which would describe how to successfully compile a bootable
> >> RTEMS+Cexp+GeSys image. A nice "bonus" would be if that image also
> worked
> >> when being run on a crate.
> >>
> >> It is not my first attempt as I already tried to do a similar thing for
> >> RTEMS 4.10. While in both cases I found lots of work being put by the
> >> community in helpful toolsets and documentation, the building process
> was
> >> not as straightforward as one would imagine by reading the QuickStart
> guide.
> >> There are many stumbles which, while probably being primitive in most
> cases,
> >> could be annoying to a user who lacks core developer knowledge and
> >> perspective. Some things can be mentioned _somewhere_ and can only be
> found
> >> quickly by google-fu and/or luck.
> >>
> >> This time I reached for RTEMS 5 right away. Results which I achieved are
> >> very similar to those which I had for RTEMS 4.10 - I can create a
> bootable
> >> image which appears to have working GeSys and Cexp shell, but access to
> >> "st.sys" fails along with other suspicious symptoms.
> >>
> >> Below is my "how-to" process which yields a bootable "rtems.ralf" file,
> and
> >> results for our test MVME3100 system boot procedure. Some points
> highlighted
> >> will probably be useful for further users' reference, and some of them
> come
> >> from earlier conversations on the mailing list. My hope is that someone
> >> knowledgeable will kindly review my steps and give some hint why the
> image
> >> fails to work as expected. Perhaps it would be great to have a
> step-by-step
> >> how-to as a part of documentation somewhere.
> >>
> >> ====================
> >> RTEMS 5 + Cexp + GeSys How-To
> >>
> >> 1. Get RTEMS source builder (rsb). As a part of its configuration, rsb
> will
> >> try to fetch various sources from multiple locations. If rsb is being
> >> configured in a protected environment (e.g. http proxy, firewalls,
> etc.),
> >> source locations can be unavailable. Get rsb sources on a machine which
> can
> >> freely download from git.rtems.org, github.com etc. with both http(s)
> and
> >> git protocol:
> >>
> >> $ mkdir --parents ~/src/RTEMS
> >> $ cd ~/src/RTEMS
> >> $ git clone http://github.com/RTEMS/rtems-source-builder.git rsb
> >> $ cd rsb/rtems
> >>
> >> Perform dry configuration and only download sources, as suggested here:
> >>
> >> https://lists.rtems.org/pipermail/users/2017-September/031647.html
> >>
> >> Choose profile as appropriate (rtems-powerpc for MVME3100):
> >>
> >> $ ../source-builder/sb-set-builder --dry-run --with-download
> >> --without-error-report --without-release-url 5/rtems-powerpc
> >>
> >> 2. If firewalls and proxies are not a problem for you, skip this step.
> Even
> >> though sources were pre-downloaded, rsb will try to fetch the
> rtems-tools
> >> repository during the build process (even if --no-download is
> specified). We
> >> need to make sure the repository is accessible or the lengthy build
> process
> >> (~ hour on two cores) will fail. In our environment, git protocol didn't
> >> work through http(s) proxy, so git config was modified:
> >>
> >> $ cd ~/src/RTEMS/rsb/rtems
> >> $ nano sources/git/rtems-tools.git/.git/config
> >>
> >> Replace:
> >> url = git://git.rtems.org/rtems-tools.git
> >> with:
> >> url = https://github.com/RTEMS/rtems-tools.git
> >>
> >> 3. rsb now has sources and patches downloaded. If you will build RTEMS
> on a
> >> different host, move the entire folder to the build machine.
> >>
> >> My build setup:
> >>
> >> $ uname -a
> >> Linux sandbox8 3.16.0-4-amd64 #1 SMP Debian 3.16.43-2+deb8u2
> (2017-06-26)
> >> x86_64 GNU/Linux
> >> $ cat /etc/debian_version
> >> 8.9
> >>
> >> All further steps are performed on the build machine.
> >>
> >> 4. Run sb-check and install necessary packages if the check tool
> complains:
> >>
> >> $ cd ~/src/RTEMS/rsb
> >> $ ./source-builder/sb-check
> >>
> >> Alas, sb-check doesn't check for everything. For example, the build
> process
> >> can fail with something like:
> >>
> >> checking for python... /usr/bin/python
> >> checking for python2.7... no
> >>
> >> This is resolved by being lucky in finding a similar issue discussed on
> the
> >> mailing list. Additional packages may be needed, in the mentioned case
> it
> >> was:
> >>
> >> $ sudo apt-get install python2.7-dev
> >>
> >> 5. Build rsb (takes a while, was an hour on my dual-core VM). Since
> sources
> >> were pre-downloaded, specify "--no-download" (however rtems-tools will
> still
> >> be fetched!):
> >>
> >> $ ../source-builder/sb-set-builder --no-download
> --prefix=$HOME/src/RTEMS/5
> >> 5/rtems-powerpc
> >>
> >> 6. Build rtems. First make sure rsb tools are in path:
> >>
> >> $ export PATH=$HOME/src/RTEMS/5/bin:$PATH
> >>
> >> Get RTEMS source:
> >>
> >> $ cd ~/src/RTEMS
> >> $ mkdir kernel
> >> $ cd kernel
> >> $ git clone https://github.com/RTEMS/rtems.git
> >>
> >> Run bootstrap scripts to generate files which are missing in cloned
> >> repository:
> >>
> >> $ cd rtems
> >> $ ./bootstrap -c
> >> $ ./bootstrap -p
> >> $ ../../rsb/source-builder/sb-bootstrap
> >> $ cd ..
> >>
> >> Configure and build RTEMS for the target:
> >>
> >> $ mkdir build-mvme3100
> >> $ cd build-mvme3100
> >> $ ../rtems/configure --enable-networking --enable-cxx --enable-rdbg
> >> --enable-posix --prefix=$HOME/src/RTEMS/5 --target=powerpc-rtems5
> >> --enable-rtemsbsp=mvme3100
> >> $ make -j 8
> >> $ make install
> >>
> >> 7. Build Cexp. Two things which are not straightforward is getting all
> >> submodules and running "make prep".
> >>
> >> $ cd ~/src/RTEMS
> >> $ mkdir cexp
> >> $ cd cexp
> >> $ git clone https://github.com/till-s/cexpsh.git
> >> $ cd cexpsh
> >> $ git submodule update --init --recursive
> >>
> >> As with RTEMS bootstrap, we need to generate some missing files.
> Stunningly,
> >> I didn't find it mentioned in cexpsh/INSTALL:
> >>
> >> $ make prep
> >>
> >> Now the code is ready to be configured and built. Use
> >> "--enable-std-rtems-installdirs" to perform installation on top of the
> >> previously built RTEMS tree:
> >>
> >> $ cd ..
> >> $ mkdir build-mvme3100
> >> $ cd build-mvme3100
> >> $ ../cexpsh/configure --enable-std-rtems-installdirs
> >> --with-rtems-top=$HOME/src/RTEMS/5 --host=powerpc-rtems5
> >> --enable-rtemsbsp=mvme3100
> >> $ make -j 8
> >> $ make install
> >>
> >> 8. Build GeSys. Another trickery here - before configuring, it is
> necessary
> >> to build the ldep tool as mentioned in documentation.
> >>
> >> Get all GeSys sources and submodules:
> >>
> >> $ cd ~/src/RTEMS
> >> $ mkdir gesys
> >> $ cd gesys
> >> $ git clone https://github.com/till-s/rtems-gesys.git
> >> $ cd rtems-gesys
> >> $ git submodule update --init --recursive
> >>
> >> As for other parts, generate missing files by running the bootstrap
> tool:
> >>
> >> $ ./bootstrap
> >>
> >> Another bootstrap is necessary for ldep:
> >>
> >> $ cd ldep
> >> $ ./bootstrap
> >> $ mkdir build
> >> $ cd build
> >>
> >> Configure and install ldep to where all rsb stuff is:
> >>
> >> $ ../configure --prefix=$HOME/src/RTEMS/5
> >> $ make
> >> $ make install
> >>
> >> Configure and install GeSys in the same tree where RTEMS and Cexp are by
> >> using "--enable-std-rtems-installdirs". Note that
> $HOME/src/RTEMS/5/bin must
> >> be in PATH:
> >>
> >> $ cd ~/src/RTEMS/gesys
> >> $ mkdir build-mvme3100
> >> $ cd build-mvme3100
> >> $ ../rtems-gesys/configure --enable-std-rtems-installdirs
> >> --with-rtems-top=$HOME/src/RTEMS/5 --host=powerpc-rtems5
> >> --enable-rtemsbsp=mvme3100
> >> $ make -j 8
> >> $ make install
> >>
> >> 9. Behold the build binaries:
> >>
> >> $ cd ~/src/RTEMS/5/powerpc-rtems5/bin
> >> $ ls
> >> ar  ld      nm       objdump  readelf    rtems.ralf  st.sys
> >> as  ld.bfd  objcopy  ranlib   rtems.exe  strip
> >>
> >> rtems.ralf is the thing. It worth mentioning that none of .obj files
> loaded
> >> in the "st.sys" are present (telnetd.obj, monitor.obj etc.)
> >>
> >> ====================
> >> Boot the image
> >>
> >> I put the resulting image in our VME timing test setup which
> successfully
> >> boots and runs RTEMS 4.9. Boot procedure is DHCP with MOTLoad netBoot.
> >> "rtems.ralf" was renamed to "rtems.boot" for booting purposes. Boot
> >> sequence:
> >>
> >> ********************
> >> Copyright(C)2008-2013,Emerson Network Power-Embedded Computing,Inc.
> >> All Rights Reserved
> >> Copyright Motorola Inc. 1999-2007, All Rights Reserved
> >> MOTLoad RTOS Version 2.0,  PAL Version 1.2 RM04
> >> Wed Nov  6 17:17:43 MST 2013
> >>
> >> MPU-Type             =MPC8540
> >> MPU-Int Clock Speed  =666MHz
> >> MPU-CCB Clock Speed  =333MHz
> >> MPU-DDR Clock Speed  =166MHz
> >> MPU-PCI Clock Speed  =66MHz, PCI, 64-bit
> >> MPU-Int Cache(L2) Enabled, 256KB, L2CTL =A8000300
> >>
> >> Reset/Boot Vector    =Flash0
> >>
> >> Local Memory Found   =10000000 (&268435456)
> >> User Download Buffer =0159D000:0179CFFF
> >>
> >> MVME3100> bootmem=malloc 0x500000
> >> return = 0193D000 (&26464256)
> >> errno  = 00000000
> >> MVME3100> netBoot -d/dev/enet0 -v -abootmem -p -h -u
> >> Network Loading from: /dev/enet0
> >>
> >> Locating BOOTP Server... Found It!
> >>
> >> Client IP Address      = 10.0.1.104
> >> Server IP Address      = 10.0.1.1
> >> Gateway IP Address     = 0.0.0.0
> >> Subnet IP Address Mask = 255.255.255.0
> >> Boot File Name         = rtems-5/rtems.boot
> >> Load Address           = 0193D000
> >> Buffer Size = ffffffff
> >>
> >> Network Boot File Load Start - Press <ESC> to Bypass, <SPC> to Continue
> >>
> >> Network Boot File Load in Progress - Press <CTRL-C> to Abort[]>>>>
> >> ...
> >> Bytes Received =&4886264, Bytes Loaded =&4886264
> >> Bytes/Second   =&488626, Elapsed Time =10 Second(s)
> >>
> >> Execution Halted on Request
> >> MV-----------------------------------------
> >> Welcome to rtems-5.0.0 (PowerPC/Generic (no FPU)/mvme3100)
> >> BSP: mvme3100, CVS Release ($Name$)
> >> CPU 0x8020 - rev 0x20
> >> Additionnal boot options are H
> >> Initial system stack at 14c9980
> >> Software IRQ stack starts at 14c9a90 with size 16384
> >> Going to start PCI buses scanning and initialization
> >> Board Type: MVME3100-1152 (S/N E10EA0D)
> >> External (=PCI Bus) Clock Freq   :   66666666 Hz
> >> Core Complex Bus (CCB) Clock Freq:  333333330 Hz
> >> CPU Clock Freq:                     133333332 Hz
> >> Ethernet 0                  EC:9E:CD:0E:16:5B
> >> Ethernet 1                  EC:9E:CD:0E:16:5C
> >> Ethernet 2                  EC:9E:CD:0E:16:5D
> >> Number of PCI buses found is : 2
> >> BUS:SLOT:FUN  VENDOR-DEV_ID: COMMAND STATUS BASE_ADDR0 BASE_ADDR1
> IRQ_PIN ->
> >> IRQ_LINE
> >>   0:0x00:0    0x1057-0x0008:  0x0006 0x20b0 0x80000000 0x00000000
>  0 ->
> >> 0 (=0x00)
> >>   0:0x11:0    0x10e3-0x0148:  0x0146 0x02b0 0x80100004 0x00000000
>  1 ->
> >> 0 (=0x00)
> >>   0:0x12:0    0x10b5-0x6520:  0x0147 0x02b0 0x00000000 0x00000000
>  0 ->
> >> 0 (=0x00)
> >>   0:0x14:0    0x1095-0x3124:  0x01c7 0x02b0 0x80300004 0x00000000
>  1 ->
> >> 2 (=0x02)
> >>   1:0x00:0    0x10b5-0x9030:  0x0142 0x0290 0x80200000 0x00000000
>  1 ->
> >> 4 (=0x04)
> >> Memory:                             268435456 bytes
> >> Cleared PCI errors: pci_stat was 0x20b0
> >> OpenPIC Version 1.2 (1 CPUs and 56 IRQ sources) at 0x3775135744
> >> OpenPIC Vendor 0 (Unknown), Device 0 (Unknown), Stepping 0
> >> OpenPIC timer frequency is 41666666 Hz
> >> MSR is 0x00001000, TCR 0x04000000
> >> -----------------------------------------
> >> Exit from bspstart
> >> libi2c: Library not initialized
> >> Registering mpc8540 i2c bus driver :No such file or directory
> >> Tundra Tsi148 PCI-VME bridge detected at 0x80100000, IRQ 0
> >> Tsi148 Outbound Ports:
> >> Port  VME-Addr   Size       PCI-Adrs   Mode:
> >> 0:    0x20000000 0x0e000000 0xc0000000 A32, SUP, D32, SCT
> >> 1:    0x00000000 0x00ff0000 0xcf000000 A24, SUP, D32, SCT
> >> 2:    0x00000000 0x00010000 0xcfff0000 A16, SUP, D32, SCT
> >> 7:    0x00000000 0x01000000 0xce000000 CSR, SUP, D32, SCT
> >> Tsi148 Inbound Ports:
> >> Port  VME-Addr   Size       PCI-Adrs   Mode:
> >> 0:    0xc0000000 0x10000000 0x00000000 A32, PGM, DAT, SUP, USR, MBLT,
> BLT
> >> vmeTsi148 IRQ manager: looking for registers on VME...
> >> Trying to find CSR on VME...
> >> vmeTsi148 - IRQ manager using VME CSR to flush FIFO
> >> Registering /dev/console as minor 0 (==/dev/ttyS0)
> >> Welcome to RTEMS 5.0.0 GeSys
> >> This system  was built on 20171213EST19:00:39
> >> Installing TIOCGWINSZ line discipline: ok.
> >> To skip initialization, press a key now...
> >> bootpc_init: using network interface 'tse1'
> >> bootpc hw address is ec:9e:cd:e:16:5b
> >> My ip address is 10 .0 .1 .104
> >> Time Server is 10 .0 .1 .1
> >> Domain name is cs.nsls2.local
> >> Boot file is rtems-5/rtems.boot
> >> Command line is IOCNAME=timing
> >> Subnet mask is 255 .255 .255 .0
> >> Server ip address is 10 .0 .1 .1
> >> Gateway ip address is 0 .0 .0 .0
> >> Log server ip address is 10 .0 .1 .1
> >> bootpc_adjust_interface: add net route, error=114
> >> Trying to synchronize NTP...OK
> >> Trying symfile 'BUILTIN', system script 'st.sys'
> >> 'st.sys':
> >> opening script file: No such file or directory
> >> Type 'cexpsh.help()' for help (no quotes)
> >> ********************
> >>
> >> There are several suspicious points: PCI buses scanning not reporting
> >> anything, i2c library/driver errors, bootpc_adjust_interface error, and
> of
> >> course "st.sys" script not being found. Peculiar enough, I can perform
> NFS
> >> mount and run a script from there. It doesn't work smoothly however and
> >> nfsMountsShow output is odd:
> >>
> >> Cexp>nfsInit(0,0)
> >> RTEMS-NFS, Till Straumann, Stanford/SLAC/SSRL 2002, See LICENSE file for
> >> licensing info.
> >> 0x00000000 (0)
> >> Cexp>nfsMount("10.0.1.1","/srv/tftp/rtems-5","/common")
> >> Trying to mount 10.0.1.1:/srv/tftp/rtems-5 on /common
> >> RTEMS-RPCIOD, Till Straumann, Stanford/SLAC/SSRL 2002, See LICENSE file
> for
> >> licensing info.
> >> 0x00000000 (0)
> >> Cexp>nfsMountsShow(0)
> >> Currently Mounted NFS:
> >> 10.0.1.1:/srv/tftp/rtems-5 on /
> >> 0x00000000 (0)
> >>
> >> ====================
> >> Conclusion
> >>
> >> To conclude that, I'd be happy to hear any suggestions and insights to
> the
> >> procedure described. It might be something as obvious as missing an
> option
> >> somewhere. It would be also great if anyone who has a working
> >> RTEMS+Cexp+GeSys setup would share instructions on how to make it work
> >> properly.
> >>
> >
> > I don't know if you ever worked this out for yourself. libnetworking
> > does not get a lot of usage in RTEMS-5.0. Heinz Junkes tells me that
> > he got EPICS-7 working on RTEMS-5 with PPC/MVME6100, but I don't know
> > if they use the cexp/gesys modules yet.
> >
> > Gedare
> >
> >> Best regards,
> >> Anton A. Derbenev
> >> NSLS-II
> >> Brookhaven National Laboratory
> >>
> >>
> >> _______________________________________________
> >> users mailing list
> >> users at rtems.org
> >> http://lists.rtems.org/mailman/listinfo/users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20180504/a7f71024/attachment-0001.html>


More information about the users mailing list