element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
RIoTboard
  • Products
  • Dev Tools
  • Single-Board Computers
  • RIoTboard
  • More
  • Cancel
RIoTboard
Forum Linux on RIoT
  • Blog
  • Forum
  • Documents
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join RIoTboard to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • Replies 31 replies
  • Subscribers 25 subscribers
  • Views 3846 views
  • Users 0 members are here
  • riot_board
  • riotboard
  • riot
  • linux
Related

Linux on RIoT

Former Member
Former Member over 11 years ago

Yep folks, it's possible to have a current linux kernel on the RIoTboard

 

Fullscreen contentimage_38322.html Download
<html><head><title>Jive SBS</title></head>
<body><font face="arial,helvetica,sans-serif">
<b>Error</b><br><font size="-1">
An general error occurred while processing your request.
</font></font></body></html>

image

image

 

Oh, and I really, really hate shiny screens image

  • Sign in to reply
  • Cancel
Parents
  • dxtn
    dxtn over 11 years ago

    How did you get it?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • radiatortwo
    radiatortwo over 11 years ago in reply to dxtn

    Selsinork did some great work on implementing the board in the Kernel sources.

     

    You can browse through his git repository and get the sources to compile them yourself.

    https://github.com/selsinork

     

    Also in this thread theres some info what has been done by him in the sources.

    Board device tree.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 11 years ago in reply to radiatortwo

    Most of the stuff is already there as there are many other boards based on the i.MX6 series.. I've just added the final layer of glue to bring together a lot of other peoples excellent work.

    Sadly, not all of the pieces are in released versions of the kernel or u-boot just yet, so you do have to be prepared for a bit of work compiling stuff yourself.

     

    I hope to have enough bits available on github later this week and when that's done I'll write some blog posts covering building and installing u-boot, the kernel, and hopefully one of Robert Nelsons minimal Debian filesystems. If we can get to that point it should be possible to install the rest.

     

    Unfortunately there doesn't seem to be a way to upload a large image file here, so it's unlikely I'll be able to provide something that can simply be written to an SD card for people who're not comfortable building everything themselves.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 11 years ago in reply to Former Member

    Oh, and if there's anyone able to build the pieces themselves, testing is always appreciated.  I'm sure there'll be something I'll miss...

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • radiatortwo
    radiatortwo over 11 years ago in reply to Former Member

    If you want I could provide some space for the image on my server.

    No website just direct linking to files.

     

    I am also trying to compile the stuff myself. Maybe create an image later if it works.
    But I think I´ll wait till you describe it later. Don´t have that much time recently.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • radiatortwo
    radiatortwo over 11 years ago in reply to Former Member

    If you want I could provide some space for the image on my server.

    No website just direct linking to files.

     

    I am also trying to compile the stuff myself. Maybe create an image later if it works.
    But I think I´ll wait till you describe it later. Don´t have that much time recently.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Children
  • Former Member
    Former Member over 11 years ago in reply to radiatortwo

    I was surprised that I could manage to use selsinork processes to get Debian running.  All is well except that I do get the demx image of u-boot on the LCD8000-97C screen but not the Debian console. I could however access the RIot via the TTL console and SSH.

    U-boot detects the display..

    => printenv

       baudrate=115200

       bootargs=console=ttymxc1,115200 init=/init nosmp video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off fbmem=10M vmalloc=400M

       bootcmd=for dtype in ${dtypes} ; do for disk in ${bootord} ; do if test ${fail} -eq 0; then ${dtype} dev ${disk} ;if run lbs; then if run evi; 

       bootdelay=2

       bootord=0 1 2

       bootpart=1

       console=ttymxc1

       dtypes=mmc

       ethact=FEC

       ethprime=FEC

       evi=env import -t ${scriptaddr} ${filesize} ;

       fail=0

       fdt_addr_r=0x11000000 

       fdt_file=imx6dl-riotboard.dtb

       kernel_addr_r=0x12000000

       lbs=load ${dtype} ${disk}:${bootpart} ${scriptaddr} /bootscript ;

       loadaddr=0x12000000

       scriptaddr=0x10008000

    I also save the following in U-boot

    U-Boot >>

       setenv bootargs console=ttymxc1,115200 init=/init nosmp video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off vmalloc=400M androidboot.console=ttymxc1    androidboot.hardware=freescale

    U-Boot >> saveenv

     

    What else need to done ? (I used selsinork step 6 to get the image, and create the uSD card on Linux)

    Thanks

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 11 years ago in reply to Former Member

    If you're using a 3.15+ kernel with my devicetree then you can't (easily) use any LVDS connected display. There are a couple of reasons for this.

     

    1. there's an issue with the imx-drm display driver (or more correctly with the selection of which clock to use for the IPU) that prevents the ability to have both HDMI & LVDS enabled at the same time. You have to chose either HDMI or LVDS and build a separate, different, devicetree for each configuration.

    2. There's a problem related to ethernet interrupts in low power modes that's best resolved by using GPIO6 to to mirror interrupts in that mode. However GPIO6 is used by the touchscreen I2C interface connected to the LVDS interface.

     

    As there's no driver for the particular touchscreen controller used on LCD8000-97C in the upstream kernels, and due to the relative cost of the display, I deemed it to be an acceptable compromise to use GPIO6 in order to provide reliable ethernet.

     

    On the side of not being able to have both LVDS & HDMI in the devicetree at the same time, it's mostly a case of waiting until the driver issue is resolved before we can enable it.

     

    Also, somewhat unfortunately, saving the environment is probably not the best of ideas. There's arguably a flaw in the way u-boot handles the environment - it saves it to eMMC. This means that even if you use a different SD card with a different OS you'll get the bootargs that were previously saved to eMMC. This can be problematic for many reasons, but take the example where you want one SD card that uses HDMI and a different one that uses LVDS it becomes difficult to do without manually changing the environment saved into eMMC every time you switch.

     

    Let me know if you do want a LVDS only setup and I'll build a devicetree for you with that functionality as well as some instruction on how to clear the saved environment and the changes you'll need for /bootscript to accomplish it.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 11 years ago in reply to Former Member

    Many thanks for the quick and prompt reply.. I am only interested in a LVDS only setup, and appreciate your willingness to help.

     

    Thanks you

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 11 years ago in reply to Former Member

    Go here https://drive.google.com/folderview?id=0B-WIc2IIJv2FQURpR2V0MkhhUjg#list and download the lvds version of the kernel.

    Copy it onto the RIoTboard and then extract it with

     

    tar xf linux-kernel-imx-lvds-3.15.0-armv7l-101.txz -C /

    then reboot.

    When u-boot prompts, press a key to break into the u-boot shell and type the following.

     

    mmc dev 2

    mmc erase 300 1

    now type 'reset' or push the reset button.

     

    You should see something like the following

     

    U-Boot 2014.07-rc3-00065-ge606136-dirty (Jun 14 2014 - 13:33:50)

     

    CPU:   Freescale i.MX6SOLO rev1.1 at 792 MHz

    Reset cause: WDOG

    Board: RIoTboard

    I2C:   ready

    DRAM:  1 GiB

    MMC:   FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2

    *** Warning - bad CRC, using default environment

     

    auto-detected panel LCD8000-97C

    Display: LCD8000-97C (1024x768)

    In:    serial

    Out:   serial

    Err:   serial

    Net:   FEC [PRIME]

     

    what we're looking for is the highlighted line that tells us that we're using the compiled in environment rather than one saved to eMMC.

     

    When the board has booted, edit /bootscript and find this line

    bargs=setenv bootargs console=${console},115200n8 rootwait root=PARTUUID=${btpart}

    change it to look like this

    bargs=setenv bootargs console=${console},115200n8 rootwait root=PARTUUID=${btpart} enable_wait_mode=off

    disabling wait mode solves the ethernel interrupt problem at the expense of some extra power consumption.

     

    The general idea here is not to edit any environment settings within u-boot, and never to use saveenv. Instead change the settings in /bootscript which means they only affect the device you're currently booted from, instead of every possible place you could boot from.

     

    For anyone who may be interested, the change to the devicetree that allows the LCD8000-97C to work is here https://github.com/selsinork/linux/commit/e9bce885d404ce86525dbab36faf84015bc53aac

     

    The change also re-enables the I2C controller connected to the LVDS connector. However this won't get the touch-screen working as there's no driver for tha chip in the upstream kernel at this point in time. The intent is only to give the option of a userspace driver or to allow for someone to forward port the 3.0.35 driver as I don't have time to even attempt it right now.

     

    Good luck, and do let us know how you get on with it!

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 11 years ago in reply to Former Member

    You are a star!!, cant wait to try it.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 11 years ago in reply to Former Member

    Yip, it works.. I now try to port the touch screen driver.image

    Zillions of thanks

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 11 years ago in reply to Former Member

    Have a look here https://github.com/embest-tech/linux-imx/commit/9bc0f9cee6fc6a1939de55324a67807ab962f2b3 that commit includes a port of the touchscreen driver to the 3.10.17 Freescale BSP by the Embest folks who designed both the RIoTboard and the LCD8000-97C.

    How close it is to being useable on 3.16+ I don't know, but it's certainly much closer and so should be easier to forward port than the version from 3.0.35.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 11 years ago in reply to Former Member

    Hmm.. having looked a bit more at the touchscreen driver, it includes four binary-only objects (in addition to what appears to be firmware), so it's unclear if it'll be possible to do much with the driver.

    It's certainly not suitable for submission to mainline in this state, it'd never be accepted.  It also leaves us in the position where a trivial change elsewhere may break the driver, as we don't know what these four binary objects depend on we can't predict what may break them.  Various of the files also proclaim to be GPL2, but with the binary bits the total can't be GPL which puts us in an akward position - we may not be able to legally distribute a compiled kernel with this included.

     

    All told, the sum of the problems this introduces means I'm not willing to waste any time on it myself. Pity, as the LCD8000-97C otherwise seems to be a fairly decent screen.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 11 years ago in reply to Former Member

    I tried to get hold of the Selsinork linux kernel source, but the article has been removed from the Element14 web, I made a backup and followed the steps in

     

    Part 3 Building mainline Linux kernel for RIoTboard.doc

     

    1. git clone -b riotboard-3.15 git://github.com/selsinork/linux.git -- does not exist anymore

    fatal: Remote branch riotboard-3.15 not found in upstream origin

    Then I tried

    2.

    git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

    cd linux

    git remote add sgo git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git

    git fetch sgo

    git checkout -b imx v3.15

    git merge sgo/for-next

    git remote add riot git://github.com/selsinork/linux.git

    git fetch riot

    git merge riot/riotboard-3.15

    gerrie@opensusehp1310:~/riot/debian/kernel> git clone -b riotboard-3.15 git://github.com/selsinork/linux.git

    Cloning into 'linux'...

    fatal: Remote branch riotboard-3.15 not found in upstream origin

    gerrie@opensusehp1310:~/riot/debian/kernel> git clone -b riotboard-3.15 git://github.com/selsinork/linux.git

    Cloning into 'linux'...

    fatal: Remote branch riotboard-3.15 not found in upstream origin

    gerrie@opensusehp1310:~/riot/debian/kernel> git clone -b riotboard-3.15

    You must specify a repository to clone.

     

    usage: git clone [options] [--] <repo> [<dir>]

     

        -v, --verbose         be more verbose

        -q, --quiet           be more quiet

        --progress            force progress reporting

        -n, --no-checkout     don't create a checkout

        --bare                create a bare repository

        --mirror              create a mirror repository (implies bare)

        -l, --local           to clone from a local repository

        --no-hardlinks        don't use local hardlinks, always copy

        -s, --shared          setup as shared repository

        --recursive           initialize submodules in the clone

        --recurse-submodules  initialize submodules in the clone

        --template <template-directory>

                              directory from which templates will be used

        --reference <repo>    reference repository

        -o, --origin <name>   use <name> instead of 'origin' to track upstream

        -b, --branch <branch>

                              checkout <branch> instead of the remote's HEAD

        -u, --upload-pack <path>

                              path to git-upload-pack on the remote

        --depth <depth>       create a shallow clone of that depth

        --single-branch       clone only one branch, HEAD or --branch

        --separate-git-dir <gitdir>

                              separate git dir from working tree

        -c, --config <key=value>

                              set config inside the new repository

     

    gerrie@opensusehp1310:~/riot/debian/kernel> git clone -b riotboard-3.15 git://github.com/selsinork/linux.git

    Cloning into 'linux'...

    fatal: Remote branch riotboard-3.15 not found in upstream origin

    gerrie@opensusehp1310:~/riot/debian/kernel> git clone ://github.com/selsinork/linux.git

    Cloning into 'linux'...

    fatal: I don't handle protocol ''

    gerrie@opensusehp1310:~/riot/debian/kernel> git clone riotboard-3.15 git://github.com/selsinork/linux.git

    fatal: repository 'riotboard-3.15' does not exist

    gerrie@opensusehp1310:~/riot/debian/kernel> git clone git://github.com/selsinork/linux.git

    Cloning into 'linux'...

    remote: Counting objects: 3651418, done.

    remote: Compressing objects: 100% (602059/602059), done.

    remote: Total 3651418 (delta 3019689), reused 3651418 (delta 3019689)

    Receiving objects: 100% (3651418/3651418), 1.01 GiB | 449.00 KiB/s, done.

    Resolving deltas: 100% (3019689/3019689), done.

    Checking connectivity... done

    Checking out files: 100% (47410/47410), done.

    3. I then tried

    For the really impatient who have skipped ahead, you can download a tarball

    here https://github.com/selsinork/linux/archive/riotboard-3.15.tar.gz, but this also does not exist any more.

    Thanks

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • radiatortwo
    radiatortwo over 11 years ago in reply to Former Member

    You  shouldn´t be looking into selsinorks stuff anymore.
    He deleted everything Riotboard related.

     

    If you really want to compile the mainline kernel yourself then you only have to use the mainline kernel from linus torvalds.

    All changes to get it running on the riotboard are integrated.

    If really needed I could write a blog entry on how to do this.


    But theres actually a more recent kernel officially from embest available, that is worked on.

     

    You can get it and much more here: RIoTboard

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube