Porting DirtyJTAG on Snickerdoodle Platform Controller

According to Snickerdoodle schematic sheet 4, there is a link between the [K] Platform Controller and ZYNQ_JTAG.

With the recent release of both:
  1. https://github.com/krtkl/snickerdoodle-STM32F078-firmware and
  2. https://github.com/jeanthom/DirtyJTAG
It could be possible to provide Snickerdoodle STM32 firmware with DirtyJTAG services (or similar JTAG SW I/F as per https://github.com/jeanthom/DirtyJTAG#inspiration--links)
If well understood, this solution could avoid the purchase of a dedicated JTAG I/F. What could be the pros/cons of such solution ? Anyone interested in such port ?

Regards, Dominique Torette.
The most clever way to do this without Xilinx support would be to make the STM32F078 USB device look like a USB Ethernet adapter then run the XVC on that using lwIP.



On Thursday, April 12, 2018 at 12:39:24 PM UTC-7, Dominique Torette wrote:
According to Snickerdoodle schematic sheet 4, there is a link between the [K] Platform Controller and ZYNQ_JTAG.

With the recent release of both:
  1. https://github.com/krtkl/snickerdoodle-STM32F078-firmware and
  2. https://github.com/jeanthom/DirtyJTAG
It could be possible to provide Snickerdoodle STM32 firmware with DirtyJTAG services (or similar JTAG SW I/F as per https://github.com/jeanthom/DirtyJTAG#inspiration--links)
If well understood, this solution could avoid the purchase of a dedicated JTAG I/F. What could be the pros/cons of such solution ? Anyone interested in such port ?

Regards, Dominique Torette.
yes, I agree.

after reading XAPP1251, this solution even allows to debug in SDK. The reference design is for linux OS but it can be implemented in bare metal as well, using lwIP. The reference design requires ethernet connection and a USB Ethernet adapter came to my mind (although I don't know how this is done, yet).

I am not experienced in this field but have been working with lwIP once before. I'd be interested in helping if there's someone with more experience. It really does not seem too complicated at first glance.

weatherbee, I did not understand, what do you mean by "without Xilinx support"?
your post was worth to remember :D

To remember is not the issue but the real challenge is to link to that post from a year ago :S

Am Donnerstag, 12. April 2018 21:58:01 UTC+1 schrieb Derek Mulcahy:
Marcus, you have a good memory!

Derek
hello Dominique,

The advantage of this solution would be the cost. A dedicated JTAG programmer is expensive.
You're saving on parts and it is more convenient to use
The disadvantage would be a slight decrease in speed, and it won't be integrated into Xilinx software. So you can use it to program the FPGA but you can't use the debugger from SDK.

have you had a look at Derek's Post? He was using XilinxVirtualCable to integrate his JTAG server with the Xilinx tools. He run a hardware server on his raspberry pi. I don't know if his solution has any limitations, seems like it fully integrates in Vivado.




Am Donnerstag, 12. April 2018 20:39:24 UTC+1 schrieb Dominique Torette:
According to Snickerdoodle schematic sheet 4, there is a link between the [K] Platform Controller and ZYNQ_JTAG.

With the recent release of both:
  1. https://github.com/krtkl/snickerdoodle-STM32F078-firmware and
  2. https://github.com/jeanthom/DirtyJTAG
It could be possible to provide Snickerdoodle STM32 firmware with DirtyJTAG services (or similar JTAG SW I/F as per https://github.com/jeanthom/DirtyJTAG#inspiration--links)
If well understood, this solution could avoid the purchase of a dedicated JTAG I/F. What could be the pros/cons of such solution ? Anyone interested in such port ?

Regards, Dominique Torette.
Am Donnerstag, 12. April 2018 20:39:24 UTC+1 schrieb Dominique Torette:
Anyone interested in such port ?

Regards, Dominique Torette.

hi Dominique,

does this mean you are looking for contributors for this task?
DirtyJTAG seems to be short piece of firmware which should be a quickly ported.
XilinxVirtualCable interfaced with an USB Ethernet adapter seems a more ambitious project, but much more valuable for the Snickerdoodle community!
Yes, the idea is to build a team with such kind of project in order to demonstrate the interest of an Open-Source Platform Controller Firmware and to learn about the Snickerdoodle on a real and very useful project.
I've some experience in embedded SW, but I'm newbie on ARM platform. So some additional expertise would be very welcome.
As first goal, I'll try to port the XilinxVirtualCable on a RedPitaya to control the a Snickerdoodle...
Any initiative is very welcome! Dominique Torette

Le vendredi 13 avril 2018 18:03:51 UTC+2, Markus a écrit :
Am Donnerstag, 12. April 2018 20:39:24 UTC+1 schrieb Dominique Torette:
Anyone interested in such port ?

Regards, Dominique Torette.

hi Dominique,

does this mean you are looking for contributors for this task?
Have you any reference for USB Ethernet adapter and lwIP stack for the STM32F078?
Is KRTKL considering to integrate such library in the default firmware?
What do I need to recompile the the STM32 firmware?
Is the no-cost Kiel MDK-lite enough? TIA.
The most likely pathway to success with this is something called RNDIS: https://en.wikipedia.org/wiki/RNDIS
"The Remote Network Driver Interface Specification (RNDIS) is a Microsoft proprietary protocol used mostly on top of USB. It provides a virtual Ethernet link to most versions of the Windows, Linux, and FreeBSD operating systems."

There is a lightweight GitHub project "LRNDIS" that appears to run on an STM32F103 - these are Cortex M3 based but have a Flash and RAM size similar to the Cortex M0 STM32F078 on snickerdoodle.

https://youtu.be/hsqWIqY8b6A
https://github.com/Lexatagan/LRNDIS
https://github.com/fetisov/lrndis

You will see that the above code is using lwIP: https://github.com/fetisov/lrndis/tree/master/lrndis

Once you have lwIP running with a USB Ethernet interface via RNDIS then Xilinx XVC would be trivial to implement: https://www.xilinx.com/products/intellectual-property/xvc.html



On Saturday, April 14, 2018 at 3:32:31 AM UTC-7, Dominique Torette wrote:
Have you any reference for USB Ethernet adapter and lwIP stack for the STM32F078?
Is KRTKL considering to integrate such library in the default firmware?
What do I need to recompile the the STM32 firmware?
Is the no-cost Kiel MDK-lite enough? TIA.
FYI, here is the free professional ARM/Keil IDE/Compiler/Debugger for the STM32F0: http://www2.keil.com/stmicroelectronics-stm32/mdk

On Sunday, April 15, 2018 at 6:07:02 PM UTC-7, weath...@krtkl.com wrote:
The most likely pathway to success with this is something called RNDIS: https://en.wikipedia.org/wiki/RNDIS
"The Remote Network Driver Interface Specification (RNDIS) is a Microsoft proprietary protocol used mostly on top of USB. It provides a virtual Ethernet link to most versions of the Windows, Linux, and FreeBSD operating systems."

There is a lightweight GitHub project "LRNDIS" that appears to run on an STM32F103 - these are Cortex M3 based but have a Flash and RAM size similar to the Cortex M0 STM32F078 on snickerdoodle.

https://youtu.be/hsqWIqY8b6A
https://github.com/Lexatagan/LRNDIS
https://github.com/fetisov/lrndis

You will see that the above code is using lwIP: https://github.com/fetisov/lrndis/tree/master/lrndis

Once you have lwIP running with a USB Ethernet interface via RNDIS then Xilinx XVC would be trivial to implement: https://www.xilinx.com/products/intellectual-property/xvc.html



On Saturday, April 14, 2018 at 3:32:31 AM UTC-7, Dominique Torette wrote:
Have you any reference for USB Ethernet adapter and lwIP stack for the STM32F078?
Is KRTKL considering to integrate such library in the default firmware?
What do I need to recompile the the STM32 firmware?
Is the no-cost Kiel MDK-lite enough? TIA.
Looking at the code and readme for the reference TCP/IP server posted here illustrates how trivial an XVC server is to implement if a TCP/IP stack (like lwIP+lwRNDIS) is available.

https://github.com/Xilinx/XilinxVirtualCable



On Sunday, April 15, 2018 at 6:09:26 PM UTC-7, weath...@krtkl.com wrote:
FYI, here is the free professional ARM/Keil IDE/Compiler/Debugger for the STM32F0: http://www2.keil.com/stmicroelectronics-stm32/mdk

On Sunday, April 15, 2018 at 6:07:02 PM UTC-7, weath...@krtkl.com wrote:
The most likely pathway to success with this is something called RNDIS: https://en.wikipedia.org/wiki/RNDIS
"The Remote Network Driver Interface Specification (RNDIS) is a Microsoft proprietary protocol used mostly on top of USB. It provides a virtual Ethernet link to most versions of the Windows, Linux, and FreeBSD operating systems."

There is a lightweight GitHub project "LRNDIS" that appears to run on an STM32F103 - these are Cortex M3 based but have a Flash and RAM size similar to the Cortex M0 STM32F078 on snickerdoodle.

https://youtu.be/hsqWIqY8b6A
https://github.com/Lexatagan/LRNDIS
https://github.com/fetisov/lrndis

You will see that the above code is using lwIP: https://github.com/fetisov/lrndis/tree/master/lrndis

Once you have lwIP running with a USB Ethernet interface via RNDIS then Xilinx XVC would be trivial to implement: https://www.xilinx.com/products/intellectual-property/xvc.html



On Saturday, April 14, 2018 at 3:32:31 AM UTC-7, Dominique Torette wrote:
Have you any reference for USB Ethernet adapter and lwIP stack for the STM32F078?
Is KRTKL considering to integrate such library in the default firmware?
What do I need to recompile the the STM32 firmware?
Is the no-cost Kiel MDK-lite enough? TIA.
Any success porting XilinxVirtualCable? I am still struggling with it.

UI0 is listed, eventually.

Am Freitag, 13. April 2018 20:25:30 UTC+1 schrieb Dominique Torette:
As first goal, I'll try to port the XilinxVirtualCable on a RedPitaya to control the a Snickerdoodle...
Any initiative is very welcome! Dominique Torette



It's working!
Awesome!
How does this code work?

On Monday, May 21, 2018 at 10:12:42 AM UTC-7, Markus wrote:



It's working!
this is the first step, running XVC server on a zynq platform as described in XAPP1251. It is using petalinux on the ARM processor.

I had a lot of issues with it, since the documentation is outdated.

It is not running on the platform controller, there is still a lot to do.


Am Montag, 21. Mai 2018 19:17:52 UTC+1 schrieb weath...@krtkl.com:
Awesome!
How does this code work?

On Monday, May 21, 2018 at 10:12:42 AM UTC-7, Markus wrote:



It's working!
Sounds like something that needs to be added to the wiki...stat. :)

On Monday, May 21, 2018 at 3:48:34 PM UTC-7, Markus wrote:
this is the first step, running XVC server on a zynq platform as described in XAPP1251. It is using petalinux on the ARM processor.

I had a lot of issues with it, since the documentation is outdated.

It is not running on the platform controller, there is still a lot to do.


Am Montag, 21. Mai 2018 19:17:52 UTC+1 schrieb weath...@krtkl.com:
Awesome!
How does this code work?

On Monday, May 21, 2018 at 10:12:42 AM UTC-7, Markus wrote:



It's working!