[POLL] UDOO NEO's Arduino - your feedback about it

Discussion in 'UDOO NEO' started by Andrea Rovai, Jul 25, 2016.

Tags:
?

Are you happy with UDOO NEO's Arduino?

  1. I am disappointed by UDOO NEO's Arduino.

  2. UDOO NEO's Arduino is good, but still some work needs to be done before I can say I am satisfied.

  3. UDOO NEO 's Arduino is good, I am satisfied.

  4. UDOO NEO's Arduino is surprising, I'm more than satisfied.

Results are only viewable after voting.
  1. nostromo

    nostromo New Member

    Joined:
    Mar 28, 2015
    Messages:
    3
    Likes Received:
    4
    Dear Andrea,
    this goes a bit deeper than just a couple of arduino libs not working and a page or two of documentation. To elaborate my point I provided you below with two code sniplets (A and B), which both compile and upload. The first logs some stuff on Serial0 (aka UART_5) and to the virtual serial connecting the A4 to the A9, the second code only on Serial0.
    Ironically the "more complex one" (Code A) succeeds with the message "UDOONeo M4 Sketch is running" and - you guessed it - writes to both serial ports.
    Code B, the one with only a couple of lines of printing to Serial0 fails with "UDOONeo M4 Sketch START failed: reboot system !" - go figure. BTW, code B actually does execute and in fact logs to the external serial port, however, the M4/A9 serial link locks up, albeit not being used at all (?!).

    What is my point?
    Well, it is quite simple: Firstly, this is code wise (five println in setup-section and one in the loop-section, padded by ample delays...) pretty much as elementary as it gets, and secondly, it not only fails, it actually fails for reasons, which are quite honestly beyond my comprehension.
    I mean five Serial0.println on the external serial port is not exactly pushing the envelope, is it?
    So with all due respect, before we even start talking missing arduino libs, could any of you guys fire up the MQX debugger and really buckle down with for example waltervl's bug list and get the most elementary things on the M4 sorted?
    Apologies that I am a bit pushy here, but I am patiently sitting on the fence since March 2015 and as of today the M4 of the Neo does still not get reliably through a couple of "print" statements on serial?

    I don't want to get polemic, but you folks do advertise even today the Neo on your own web page like this:
    "Having a single chip with two cores means lower power consumption, lower costs and high speed communication. In fact there isn't a shared serial port or a bus between the two cores, but an high speed shared memory. This guarantees better performance, stability and robustness."

    Looking at the state of things, that appears as a somewhat daring advertisement, doesn't it?


    //------------------ CODE A ----------------------
    HardwareSerial *YetAnotherPort;
    HardwareSerial *AnotherYetAnotherPort;

    void portstart(HardwareSerial *YetAnotherYetAnotherPort) {
    AnotherYetAnotherPort = YetAnotherYetAnotherPort;
    AnotherYetAnotherPort->begin(115200);
    }

    void setup() {
    // put your setup code here, to run once:
    Serial.begin(115200);
    Serial.println(" Debug 0!");
    delay(100);
    YetAnotherPort = &Serial0;
    Serial.println(" Debug 1!");
    delay(100);
    portstart(YetAnotherPort);
    YetAnotherPort->println(" Debug 3!");
    YetAnotherPort->println(" Debug 4!");
    Serial.println(" Debug 5!");
    delay(100);
    }
    void loop() {
    // put your main code here, to run repeatedly:
    Serial.println(" Main loop!");
    YetAnotherPort->println(" Main loop!");
    delay(100);
    }
    //------------------------------------------------------------
    //------------------ CODE B ----------------------
    HardwareSerial *port;
    void setup() {
    // put your setup code here, to run once:
    delay(500);
    Serial0.begin(115200);
    port = &Serial0;
    port->println(" Start !");
    delay(100);
    port->println(" Debug 2 !");
    delay(100);
    port->println(" Debug 3 !");
    delay(100);

    delay(2000);
    //port->println("Wow, already three println!");
    delay(100);
    }
    void loop() {
    // put your main code here, to run repeatedly:
    port->println(" Ping !");
    delay(200);
    }
    //------------------------------------------------------------
     
    Maurice likes this.
  2. Maurice

    Maurice Active Member

    Joined:
    Oct 13, 2015
    Messages:
    245
    Likes Received:
    46
    Use more digital pins on M4
    • all we need modify the device tree configuration to recompile the dtb -> I have no clue. I know since a while a little about dtbs
    • To recompile the kernel please follow this guide to set up the kernel compiling enviroment. -> what guide? How difficult is this going to be?
    • ... imx6sx-udoo-neo-external.dts ... -> where should this file be?
    SPI:
    [aka http://www.udoo.org/forum/threads/spi-pins.5142/]
    • ECSPI_5 12 / 40 11 / 43 13 / 42 10 / 41 - - - M4 (digital io mode) -> always both? Either one of the two sets?
    • By default it is assigned to the M4 core, but configured as digital input/output (GPIO). -> Should I do something to use it on M4 for SPI?
    I understand that it is really difficult to write documentation, and what to assume is obvious and what is not, what is the level of knowledge of the reader, etc, etc.
     
  3. waltervl

    waltervl Well-Known Member

    Joined:
    Dec 12, 2015
    Messages:
    905
    Likes Received:
    283
    I agree, the part of the device tree editor, and all the various options on what processor on what communication port and what pins is very confusing for a non experienced user (like me). For example are the arduino SDA/SCL pins functional on Arduino pins yes or no? It is not very clear from the docs. BTW: The Answer is yes.

    To end positively: The concept of the Udoo device tree web tool is very good and could be expanded!! Perhaps also add the M4 active on/off switch from the web config tool?

    Edit: following this page i2c-2 is set to A9 and not M4: http://www.udoo.org/docs-neo/Hardware_&_Accessories/I2C_bus.html
    And here it says you can work with the SDA/SCL pins with Wire.begin without issues. http://www.udoo.org/docs-neo/Arduino_M4_Processor/Arduino_differences.html
     
    Last edited: Nov 8, 2016
  4. waltervl

    waltervl Well-Known Member

    Joined:
    Dec 12, 2015
    Messages:
    905
    Likes Received:
    283
    What wondered me also (@Andrea Rovai perhaps move this into a new thread) is: Why are all the onboard - and brick sensors default attached to the Linux side and not to the Arduino? Seems that sensor reading is typically something you would do on the Arduino side as the data typically is needed to control output on the Arduino side.
     
  5. Andrea Rovai

    Andrea Rovai Administrator Staff Member

    Joined:
    Oct 27, 2014
    Messages:
    1,615
    Likes Received:
    204
  6. Maurice

    Maurice Active Member

    Joined:
    Oct 13, 2015
    Messages:
    245
    Likes Received:
    46
    I think @waltervl is wondering why the bricks aren't assigned to M4 by default and that you'd have to use the DTE to get them to Linux.

    As I don't use the DTE every day (sorry), I'm always confused what the colors mean, and what it means to drop a 1-wire on a pin... I still am not sure how to get all the pins to M4, if that can be done with the DTE or that I have to venture into unknown territories of recompiling kernels and so....

    The DTE in general is very nice though, don't get me wrong.

    As to see why I rather use an Arduino to get my stuff up and running first, check my message about the 16x2 display.... It is a bit frustrating to never know if a component more complex than a led or a button will work.
     
    waltervl likes this.
  7. waltervl

    waltervl Well-Known Member

    Joined:
    Dec 12, 2015
    Messages:
    905
    Likes Received:
    283
    As @Maurice mentioned I think that the buildin 9-axis sensors ( and also bricks) are normally read from Arduino side. Why are the I2C interfaces to these sensors be default attached to the Linux side?

    Now every user of the Neo first has to go to the DTE to change them to the Arduino side. And if he updates Udoobuntu he probably has to do it again.....

    Furthermore as I already explained the documentation is not always clear about this.
     
  8. Andrea Rovai

    Andrea Rovai Administrator Staff Member

    Joined:
    Oct 27, 2014
    Messages:
    1,615
    Likes Received:
    204
    Guys, you're right, and we've decided that in the next build we'll assign Bricks and 9-axis sensors directly to the Arduino side.
     
    waltervl and Maurice like this.
  9. Maurice

    Maurice Active Member

    Joined:
    Oct 13, 2015
    Messages:
    245
    Likes Received:
    46
    Be sure to document it well at the download page (not only release notes), as those who use it from the A9 side might be quite surprised if their stuff stops working suddenly.
    Another frustration: http://www.udoo.org/forum/threads/yet-another-library-doesnt-work-rf24network.6142/ , which leads me to quote myself:
     
  10. Andrea Rovai

    Andrea Rovai Administrator Staff Member

    Joined:
    Oct 27, 2014
    Messages:
    1,615
    Likes Received:
    204
    I'm sorry Maurice, but on this point I disagree: there is a place for the documentation, and this place is not the Downloads page.
    If we include the documentation (or even part of it) into the Downloads page, the Downloads page will soon become an unusable mess.
    Anyway, we're making a list of the compatible libraries, so to avoid surprises.
     
  11. chang

    chang New Member

    Joined:
    Feb 18, 2017
    Messages:
    6
    Likes Received:
    0
    udoo neo is a new to me , I use arduino mage and uno before, I never encounter this much problem, like arduino won't keep the sketch (the problem still not solve yet), but I will keep exploring this. some folks here may feel the same, right? if Neo was so easy to understand , I believe that it won't have so many people buying it.
     

Share This Page