Dear Intel and Edison Community,
I tried to use the Edison MCU in my project to perform low level tasks such as receiving and processing packets from UART but I've encountered some problems.
The MCU API is really poor: only 3 functions to work with UART - https://software.intel.com/en-us/node/557355# APIs_to_access_UART MCU API | Intel® Developer Zone.
In the API description it is told that only UART 2 works on MCU, but it doesn't! UART 1 works instead but not fine: I could send some data but not receive.
What should I do if I don't know packet length? How can I receive just one byte from UART stream? No data available functions, no UART interrupts, no event timer interrupts
Sometimes I succeeded to receive something from UART but mostly it was a junk.
As I understood in Edison SoC we have Intel® Quark™ microcontroller D1000 http://www.intel.com/content/www/us/en/embedded/products/quark/mcu-d1000/quark-d1000-datasheet.html Intel® Quark™ Microcontroller D1000: Datasheet
and it has a lot of peripherals and great functionality, and of course it supports UART and Timers interrupts.
What Intel is planning about Quark MCU in Edison?
Will it be possible to use this functionality? I would like to work without Viper OS - just bare-metal applications + MCU<->CPU communication library.
In conclusion I would like to say that Edison's hardware is great but software support of MCU core is mediocre and I hope it will be improved soon!
Participant of Intel IoT Roadshow Russia (Petrozavodsk).
The reason why you can only use UART 1 is because according to https://software.intel.com/en-us/node/557355# APIs_to_access_UART MCU API, UART 2 is used as Linux kernel console and you have to stop this service in order to use it.
Also according to https://software.intel.com/en-us/node/557355# APIs_to_access_UART MCU API, UART parameters cannot be changed, so in that case the packet length is 8 bit. So make sure you are expecting this amount of bits and that you have set the baud rate correctly.
Regarding timer interrupts, they are not mentioned at all in the https://software.intel.com/en-us/node/557355# APIs_to_access_UART MCU API, so they are not currently supported.
I understand your concerns with the current limitations of the Edison's MCU, nevertheless, Intel is constantly working on improving their products but we will have to wait for a new version of the MCU's API that hopefully increases the features available, however there's not ETA on it.
Thank you for your answer! It was more a moan when a question - it is pity that powers of this MCU are hidden from us.
I can hardly remember last time when I used UART settings different from "8 bits, 1 stop bit, no parity" , I think it was than I was a student.
What about MMU and Viper OS? Maybe I can address peripheral registers directly? I guess no but...
Looking forward to get more powerful API that matches MCU functionality or to get bare-metal access to MCU.
Unfortunately that's the only way to interact with the Edison's MCU right now. We will have to wait for future releases to see if additional features such are those are enabled, however as I mentioned earlier there's no ETA on these releases.