Anyone tried out their kernel on Intel Edison?
Anyone tried out their kernel on Intel Edison?
Mine just arrived today... Going to see if I can get it booting. Seems u-boot is the way to go.
Re: Anyone tried out their kernel on Intel Edison?
Did you just buy the CPU or did you buy a board, too? Which board did you buy?
It surely seems interesting. I'm thinking about getting one myself
Altough I've got no experience with arduino or alike
It surely seems interesting. I'm thinking about getting one myself
Altough I've got no experience with arduino or alike
Re: Anyone tried out their kernel on Intel Edison?
I bought this;
https://www.sparkfun.com/products/13025
and this
https://www.sparkfun.com/products/13097
to be sure....
The Edison has really two things inside;
1) Intel Quark microcontroller running at 100MHz. This is the part which runs the "Arduino" stuff...
2) Dual core Intel Atom at 500MHz. It includes a flash memory and ram. This means its basically a embedded PC. It lacks a 16-bit BIOS, so you are booting straight into 32-bit mode with the help from U-boot. Very similar to grub or uboot found on other hardware platforms.
There is also a DFU programming support and a FTDI (serial<->usb) onboard. That way you can access your device serial uart via your pc with a usb cable.
regards
Thomas
https://www.sparkfun.com/products/13025
and this
https://www.sparkfun.com/products/13097
to be sure....
The Edison has really two things inside;
1) Intel Quark microcontroller running at 100MHz. This is the part which runs the "Arduino" stuff...
2) Dual core Intel Atom at 500MHz. It includes a flash memory and ram. This means its basically a embedded PC. It lacks a 16-bit BIOS, so you are booting straight into 32-bit mode with the help from U-boot. Very similar to grub or uboot found on other hardware platforms.
There is also a DFU programming support and a FTDI (serial<->usb) onboard. That way you can access your device serial uart via your pc with a usb cable.
regards
Thomas
Re: Anyone tried out their kernel on Intel Edison?
I looked at some documents/tutorials and I'm wondering (altough I don't even own one yet ) how you'd flash anything on it other than Yocto.
As I understand it you write files into the flash memory just by moving those files onto the "Edison" drive (windows)?
This seems a little bit strange. What does the CPU execute first when it turns on?
How does it work that you just copy the files of Yocto on this drive and then you can just connect to Yocto on your Edison board via putty (COM port).
It seems there's some magic involved or my brain just can't figure out how this works.
As I understand it you write files into the flash memory just by moving those files onto the "Edison" drive (windows)?
This seems a little bit strange. What does the CPU execute first when it turns on?
How does it work that you just copy the files of Yocto on this drive and then you can just connect to Yocto on your Edison board via putty (COM port).
It seems there's some magic involved or my brain just can't figure out how this works.
Re: Anyone tried out their kernel on Intel Edison?
Quick explanation;
When the device powers on it loads a primary bootloader from flash. (Intel code).
This bootloader loads u-boot from flash emmc (The usb disk you see when you connect edison to a computer). Then u-boot loads whatever you tell it... Just copy your kernel to the disk and boot away... I think
From the usb serial port console on power-on the Edison:
When the device powers on it loads a primary bootloader from flash. (Intel code).
This bootloader loads u-boot from flash emmc (The usb disk you see when you connect edison to a computer). Then u-boot loads whatever you tell it... Just copy your kernel to the disk and boot away... I think
From the usb serial port console on power-on the Edison:
Code: Select all
******************************
******************************
PSH KERNEL VERSION: b0182727
WR: 20104000
******************************
SCU IPC: 0x800000d0 0xfffce92c
PSH miaHOB version: TNG.B0.VVBD.0000000c
microkernel built 23:15:13 Apr 24 2014
******* PSH loader *******
PCM page cache size = 192 KB
Cache Constraint = 0 Pages
Arming IPC driver ..
Adding page store pool ..
PagestoreAddr(IMR Start Address) = 0x04899000
pageStoreSize(IMR Size) = 0x00080000
*** Ready to receive application ***
U-Boot 2014.04 (Aug 20 2014 - 16:08:32)
Watchdog enabled
DRAM: 980.6 MiB
MMC: tangier_sdhci: 0
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 1 ... 0
boot >
Last edited by mutex on Tue Nov 11, 2014 6:01 am, edited 1 time in total.
Re: Anyone tried out their kernel on Intel Edison?
So the intel bootloader is hard coded to load/use u-boot?
You just copy u-boot and your kernel on the flash drive and configure u-boot to load your kernel and everything should be fine, right?
What's PSH-Kernel? Is this the bootloader from intel which loads u-boot?
You just copy u-boot and your kernel on the flash drive and configure u-boot to load your kernel and everything should be fine, right?
What's PSH-Kernel? Is this the bootloader from intel which loads u-boot?
Re: Anyone tried out their kernel on Intel Edison?
I guess you could replace u-boot with your own, but I'm not sure how it works. I guess the u-boot may be a ELF binary and that it jumps to the entry point... **not sure**
The PSH stuff is the Intel "hardcoded" bootloader. It's actually not hardcoded... Can also be replaced by connecting Edison in DFU mode and flashing it. Don't know if there is a "stage0" boot process that checks a signature or something. Intel can probably tell you that...
But u-boot works well. Does provide a useful environment for loading your kernel.
just "fatload mmc 0:7 0x1000000 yourkernel.img" and "go 0x1001000" or whatever...
I'll post a log from my experiment this evening.
regards
Thomas
The PSH stuff is the Intel "hardcoded" bootloader. It's actually not hardcoded... Can also be replaced by connecting Edison in DFU mode and flashing it. Don't know if there is a "stage0" boot process that checks a signature or something. Intel can probably tell you that...
But u-boot works well. Does provide a useful environment for loading your kernel.
just "fatload mmc 0:7 0x1000000 yourkernel.img" and "go 0x1001000" or whatever...
I'll post a log from my experiment this evening.
regards
Thomas
- Brynet-Inc
- Member
- Posts: 2426
- Joined: Tue Oct 17, 2006 9:29 pm
- Libera.chat IRC: brynet
- Location: Canada
- Contact:
Re: Anyone tried out their kernel on Intel Edison?
From what I can gleam from Google, there are actually 3 cores in the second generation Edison. A dual-core Atom, which runs Linux by default.. and a single core Intel Quark, running a proprietary RTOS based on VxWorks (..called ViperOS).
The Intel Quark core might be playing a role similar to the GPU in the Raspberry Pi, being initialized first and later bootstrapping the faster Atom cores.
The Intel Quark core might be playing a role similar to the GPU in the Raspberry Pi, being initialized first and later bootstrapping the faster Atom cores.
Re: Anyone tried out their kernel on Intel Edison?
Lack of documentation on the SoC made this a real pain.
My finding so far;
u-boot loading via emmc is simple. Just put the binary on the removable USB drive that shows up when you connect your computer to the USB OTG port and on the other USB console to u-boot just issue;
But doing that every time you need to test a new binary is painfull.
So i tried out serial loading of the kernel and it works pretty well (but slow).
I then created a expect script on my host/build computer to upload the file with picocom and issue "go 0x100000" after its done. That worked well, but nothing happens on screen....!
My finding so far;
u-boot loading via emmc is simple. Just put the binary on the removable USB drive that shows up when you connect your computer to the USB OTG port and on the other USB console to u-boot just issue;
Code: Select all
load emmc 0:9 0x100000 /kernel.img
go 0x100000
So i tried out serial loading of the kernel and it works pretty well (but slow).
Code: Select all
loady 0x100000 115200
Re: Anyone tried out their kernel on Intel Edison?
A major research issue was finding out how to output on the UART. I was hoping my IO port based serial port code would work. That was not the case! Since I was unable to find any documentation on the SoC I had to do some digging...
I booted the Linux image that came with Edison and took a look at /proc/tty/drivers and /proc/tty/driver/* for the current tty. Tells me its a MFD serial port. A look in lspci gave me the clue. Its a PCI serial port.
I added the vendor/device to my PCI serial driver and rebooted since that should work..... Nothing!
I tried to write directly to the address I found in lspci from u-boot...
That works.. So since u-boot initialized the UART to 115200 and mapped the BAR i was good..
So I created a dumb driver in my kernel to handle that. So now it boots with messages.
Problem is that kernel does not find the PCI devices except host bridge and graphics adapter... Why???
So I did some more digging with dmesg and lspci
Looks like the PCI config space is not IO mapped but MMIO mapped. That was new to me.... So now I'm writing a new PCI enumerator supporting memory mapped config space..
That took some time figuring out
I booted the Linux image that came with Edison and took a look at /proc/tty/drivers and /proc/tty/driver/* for the current tty. Tells me its a MFD serial port. A look in lspci gave me the clue. Its a PCI serial port.
I added the vendor/device to my PCI serial driver and rebooted since that should work..... Nothing!
I tried to write directly to the address I found in lspci from u-boot...
Code: Select all
boot>mw.b 0xff010180 0x21 1
!boot>
So I created a dumb driver in my kernel to handle that. So now it boots with messages.
Problem is that kernel does not find the PCI devices except host bridge and graphics adapter... Why???
So I did some more digging with dmesg and lspci
Looks like the PCI config space is not IO mapped but MMIO mapped. That was new to me.... So now I'm writing a new PCI enumerator supporting memory mapped config space..
That took some time figuring out
Re: Anyone tried out their kernel on Intel Edison?
If you like you could add an article to our wiki in which you write about your experiences with Intel Edison.
How to start your OS with u-boot, how to write messages to the serial port and in general just some problems you encountered and how you solved them.
As I said I'm thinking about getting one myself but I think I wouldn't have been able to find out how to do those things on by myself. So I would be glad if such an article like mentioned above exists to help me get started
How to start your OS with u-boot, how to write messages to the serial port and in general just some problems you encountered and how you solved them.
As I said I'm thinking about getting one myself but I think I wouldn't have been able to find out how to do those things on by myself. So I would be glad if such an article like mentioned above exists to help me get started
Re: Anyone tried out their kernel on Intel Edison?
I'll create a short summary on the wiki.
The Edison firmware starts a watchdog thats a part of the SoC peripherals. If that's not kept alive or stopped your board will reset within a minute or so.
The chipset is undocumented (released end of Q4) so I had to do some digging again.
This will disable the watchdog from u-boot:
This will perform a board reset from your kernel:
The Edison firmware starts a watchdog thats a part of the SoC peripherals. If that's not kept alive or stopped your board will reset within a minute or so.
The chipset is undocumented (released end of Q4) so I had to do some digging again.
This will disable the watchdog from u-boot:
Code: Select all
mw.l 0xff009000 0x10f8 1
Code: Select all
*((dword*)0xff009000) = 0xf3;
-
- Member
- Posts: 170
- Joined: Wed Jul 18, 2007 5:51 am
Re: Anyone tried out their kernel on Intel Edison?
Why would anyone buy one of these Intel Edisons, when a Rasberry Pi is about HALF the price?
You can get Linux prebuilt for Rasberry Pi, it seems there is no Linux ready for Edison yet.
Rasberry is much better documented so OS Development must be easier on Raspberry.
mutex sounds like he is an Intel employee or shareholder.
You can get Linux prebuilt for Rasberry Pi, it seems there is no Linux ready for Edison yet.
Rasberry is much better documented so OS Development must be easier on Raspberry.
mutex sounds like he is an Intel employee or shareholder.
Re: Anyone tried out their kernel on Intel Edison?
For Intel Edison there's a linux distribution called Yocto which is available.
It's compatible with arduino and also: https://www.sparkfun.com/news/1603
It's compatible with arduino and also: https://www.sparkfun.com/news/1603
- Combuster
- Member
- Posts: 9301
- Joined: Wed Oct 18, 2006 3:45 am
- Libera.chat IRC: [com]buster
- Location: On the balcony, where I can actually keep 1½m distance
- Contact:
Re: Anyone tried out their kernel on Intel Edison?
How about comparing it slightly more fairly to a raspberry with a wifi dongle?tom9876543 wrote:Why would anyone buy one of these Intel Edisons, when a Rasberry Pi is about HALF the price?