Some basic questions from a newcomer

Discussion in 'UDOO NEO' started by bremenpl, Apr 16, 2017.

Tags:
  1. bremenpl

    bremenpl New Member

    Joined:
    Apr 16, 2017
    Messages:
    27
    Likes Received:
    2
    Hello there!
    I have just found the UDOO neo full board and insta-bought it. It seems great with the support and educational aim. I have some basic questions about it that I could not get answer to in a search:
    - Does it include any usage manual? Apart from the brochure.
    - Is it fully open hardware like beaglebone black? Can the schematics be freely viewed?
    - Are the courses mentioned in here ( https://community.arm.com/iot/embed...cialMedia&utm_campaign=AUP&utm_medium=Organic ) available for free to anyone who bought the board?

    I would appreciate all help!
     
  2. waltervl

    waltervl UDOOer

    Joined:
    Dec 12, 2015
    Messages:
    2,314
    Likes Received:
    580
    bremenpl likes this.
  3. bremenpl

    bremenpl New Member

    Joined:
    Apr 16, 2017
    Messages:
    27
    Likes Received:
    2
    Thank you for reply. I dont mind the arduino issues, as I never intended to use them. Kernel programming and the M4 bare metal programming courses are in my region of interest are in my main region of interest. Are there any list of current bugs apart the ones reffering the arduino functionality?

    Ps: Is the sd card the only memory in which linux can be placed? I have read on some page that there is a pararel flash inteface. Can an emmc be connected?
     
    Last edited: Apr 16, 2017
  4. waltervl

    waltervl UDOOer

    Joined:
    Dec 12, 2015
    Messages:
    2,314
    Likes Received:
    580
    It looks like the courses you refer to are only Linux oriented and not on M4 bare metal programming.

    The Linux side is pretty OK only the display driver has some issues (high CPU loads). You definitely also should have a look into the imx6solox reference manual:
    http://cache.nxp.com/files/32bit/do...ORMAT=pdf&WT_ASSET=Documentation&fileExt=.pdf

    I have no knowledge about an optional emmc but that is more my lack of knowledge than the lack of the possibilities of the Neo.
     
  5. waltervl

    waltervl UDOOer

    Joined:
    Dec 12, 2015
    Messages:
    2,314
    Likes Received:
    580
    You can also search for "bare metal" programming here on the forum. As the CPU of the Neo is a rare one with it's combination of an A9 and M4 there is not so much information. For a starter in embedded programming it supposedly better to start with a single processor first as the combination gives a lot of extra complexity.
     
  6. bremenpl

    bremenpl New Member

    Joined:
    Apr 16, 2017
    Messages:
    27
    Likes Received:
    2
    Thanks for the link. I am not a beginner, but not a pro either. I have been searching for a SoC like this. I used Beaglebone black before because of the PRU modules it had. The problem is that those PRU's have limited functionality and its really difficult to work with them in my opinion. At least comparing to an linux based system connected externally with a real time MCU, ie. an Cortex M4 chip. I was wondering for example, how is this embedded M4 core programmed? Does it feature an external JTAG interface, so I could connect for example a J-Link debugger and write code for it excplicitly i Eclipse or Atolic studio? In beaglebone it was anyoing that the PRU's can be only interfaced within the system. I will check the datasheet and figure this out eventually I gues, but I was wondering either maybe you guys have expirience with it and could brief me up?
     
  7. jas-mx

    jas-mx Active Member

    Joined:
    Dec 31, 2013
    Messages:
    407
    Likes Received:
    118
    I understand the limitations with the PRU on the Beaglebone, the imx6sx is very different in that M4 is a slave core and has to share its bus/clocks/peripherals with the A9 so programming becomes significantly more complicated that using a traditional M3/M4 MCU. The A9 always boots first and is used to 'load code' onto the M4. There's little documentation for beginners so its a case of learning by doing, for M4, Eclipse could be used however its not well integrated plus JTAG is supported but easy to configured/setup unless you invest in a ARM DS5. To save repeating myself, if you search this forum you find similar question raised and answered (mostly by myself) with numerous link.
     
  8. bremenpl

    bremenpl New Member

    Joined:
    Apr 16, 2017
    Messages:
    27
    Likes Received:
    2
    That you for answet. I see in the schematics that jtag is on the headers. Now I wondered, is it to access the a9 or m4? I hoped for the m4 to be as "separate" as possible. For example, that it would be possible to program/debug the m4 within eclipse externally.

    With PRU in the bbb I also couldnt load code to the pru extetnally, only using the A8. Because of such limitations, it still seems that using 2 separate mcus for linux + rtos is easier.
     
  9. waltervl

    waltervl UDOOer

    Joined:
    Dec 12, 2015
    Messages:
    2,314
    Likes Received:
    580
  10. bremenpl

    bremenpl New Member

    Joined:
    Apr 16, 2017
    Messages:
    27
    Likes Received:
    2
    I get the point :p... Thank you

    Wysłane z mojego MotoG3 przy użyciu Tapatalka
     
  11. jas-mx

    jas-mx Active Member

    Joined:
    Dec 31, 2013
    Messages:
    407
    Likes Received:
    118
    Definitely easier to use separate mcus, eg use any linux board + STM32
     
  12. bremenpl

    bremenpl New Member

    Joined:
    Apr 16, 2017
    Messages:
    27
    Likes Received:
    2
    Yes, thats what i was doing so far. I am however looking for an encapsulated system. Esier to updated deployed device.

    Wysłane z mojego MotoG3 przy użyciu Tapatalka
     
  13. Borbarad

    Borbarad New Member

    Joined:
    Mar 1, 2017
    Messages:
    4
    Likes Received:
    1
    Hi,

    I have looked at the Udoo Neo and had, as far as I can tell, similar intentions.
    Some points you might find interesting:
    1) As fas as I have read, the JTAG interface ist for both A9 and M4. It is a daisychain.
    2) Hitting a breakpoint or pausing execution is for BOTH cores.
    3) Invest in an NXP LPC Link 2 and update the firmware with the Segger one. Saves the trouble using OpenOCD. Have a look at: https://www.embeddedartists.com/sit...MX6SoloX/iMX6SoloX_Working_with_Cortex-M4.pdf
    4) I had problems using breakpoints. I don't know why. But apparently it had something to do with the place where the firmware is executed. The Neo location @0x84000000 didn't work for me. I used a different linker script @0x910000 (OCRAM or TCM can't remember). After this change the breakpoints worked.

    My idea was to get rid of the Arduino stuff and use FreeRTOS. NXP supports it offically so what can possibly go wrong?!
    The communication via virtual serial port!
    The Arduino stuff uses MCC to communicate with the Linux part.
    The FreeRTOS does not have support for MCC but for rpmsg.
    rpmsg is not support by Linux 3.14 but 4.1. There is no offical Linux 4.1 for the Neo.
    There is an unoffical 4.1 Kernel: https://github.com/fmntf/linux_kernel/tree/4.1.15_2.x-udoo
    Down the rabbit hole...

    Additionally take a look at: https://github.com/tcmichals/rpmsg-neo (Linux part) and https://github.com/tcmichals/FreeRTOS-Neo (FreeRTOS part) to get a serial port and a lwip capable network interface (I only tried the serial port) running.
    The above mentioned kernel provides already a serial port(https://github.com/fmntf/linux_kernel/blob/4.1.15_2.x-udoo/drivers/rpmsg/imx_rpmsg_tty.c). But I didn't have the time to test this implementation.

    Regards,
    Borbarad
     
  14. bremenpl

    bremenpl New Member

    Joined:
    Apr 16, 2017
    Messages:
    27
    Likes Received:
    2
    Hi, I had the exact same intentions! I also wanted to get rid of arduibo and use freertos in m4. I have a jlink edu so debbuging probe wont be a problem. Thank you for the hints, i will look them up. One question though, when you said that when the breakpoint is hit both cores stop, did you mean they literally both stop or that you can just debug both or each one without interrupting another? I havent used more than one device with single jtag yet.

    Wysłane z mojego MotoG3 przy użyciu Tapatalka
     
  15. Borbarad

    Borbarad New Member

    Joined:
    Mar 1, 2017
    Messages:
    4
    Likes Received:
    1
    Hi,

    I don't know if it is possible to simultaneously debug both cores e.g. having two instances of Eclipse running one for a Linux program and one for a FreeRTOS on the M4.
    I'm not sure if it can be done, because they had somehow to share the JTAG debugger. But I don't know for sure. I was happy to get this far.
    BUT back to your question:
    I boot Linux and load a simple program for the M4. Now I start my debug session in Eclipse. Eclipse loads the firmware blob and runs it. Then I set a breakpoint. As soon as I hit the breakpoint the serial console of the A9(UART_1) is unresponsive until I resume the debug session.

    With a serial connection as a communication path I don't think that it is really necessary to have a debugger on both ends (of course it would be easier ...)

    CU,
    Borbarad
     
  16. bremenpl

    bremenpl New Member

    Joined:
    Apr 16, 2017
    Messages:
    27
    Likes Received:
    2
    It is probably not possible yo have 2 eclipse instances running but most likely it is to have 2 projects debuggevat the same time in the same workspace. In the debug view one can see 2 separate threads. I have done such thing on 2 separate arm devices with 2 separate jlinks. Thats why I wonder either one jlink with jtag chain would be the same. As soon as i will get some spare time I will go through your links and try to figure it out. Thank you very muchvor your feedback. Btw, if you dont mind, I have 2 questions I cant get over with- is the communication between a9 and m4 a virtual uart? And where is te program for m4 stored? Does it have a virtual flash?

    Wysłane z mojego MotoG3 przy użyciu Tapatalka
     
  17. Borbarad

    Borbarad New Member

    Joined:
    Mar 1, 2017
    Messages:
    4
    Likes Received:
    1
    Hi,
    The NXP provided kernel changes should give you a virtual uart. The code from tcmichals I linked earlier gives you a virtual uart, virtual network and an user end point(as far as I remember there was some kind of test program you could check how to use this end point).

    The firmware can be loaded at different places in the memory. The NEO loads the arduino firmware into the RAM @0x84000000. As mentioned I was unable to set my breakpoints there. Take a look at the provided linker scripts: https://www.nxp.com/webapp/Download?colCode=FreeRTOS_MX6SX_1.0.1_WIN and this page: http://developer.toradex.com/knowledge-base/freertos-on-the-cortex-m4-of-a-colibri-imx7
    They will tell you where you can store your firmware and how much space there is. Remark: If you store the firmware into the DDR you have to make sure, that Linux is aware of this and does not want to access the area. Never done it, but I think you have to look into the device tree to achieve this.

    CU,
    Borbarad
     
  18. bremenpl

    bremenpl New Member

    Joined:
    Apr 16, 2017
    Messages:
    27
    Likes Received:
    2
    Thank you for the hints. This will be tough to achieve for me but I will hive it a go.
     
  19. bremenpl

    bremenpl New Member

    Joined:
    Apr 16, 2017
    Messages:
    27
    Likes Received:
    2
    Is the difference between IMX6 and IMX7 only in number of cores (one vs two)?
     
  20. jas-mx

    jas-mx Active Member

    Joined:
    Dec 31, 2013
    Messages:
    407
    Likes Received:
    118
    imx7 is a slightly different beast as the peripheral set is aimed at low power applications (no gpu, no VADC, A7 cores, slight memory map differences etc). Its also available in single or dual core A7.
     

Share This Page