Could be they store different firmware/streams in the windows and linux
versions of their software, still waiting for the hardware to arrive so this
experiment will have to wait until that time.
--Ray
On 2021-01-07 1:03 p.m., Kevin Grant wrote:
>
> Ray,
>
> FYI to extract the bitstream from USB packets I used (Windows, sorry) Eltima
> Software USB Analyzer, free 14 day evaluation.
>
> Run it, select LA2014, start Kingst software. Select all the 4096 size
> packets (INs and OUTs, so 90 frames) and select export to bin. This will give
> you the bitstream already padded with zeros at the end (to reach whole number
> of 4096 packets, plus one packet of 4096 zeros at the end). File size 184,320
> bytes CRC32 == 0x31a1cffe. I suspect there is also some obfuscation of the
> bitstream size sent to the FX2 just prior to the bitstream, so use the size
> from the control transfer immediately preceding the 4096 bulk packets (size
> 0x02b8ba) in line protocol.c line 126. I'll tidy up my python a bit before
> posting.
>
> Another method for testing is to allow the Kingst software to initialise the
> board, then close it and connect with your code. The Kingst software disables
> the FPGA when closing, so I open the 'About' box (or any modal) and then
> force close/kill with task manager. That leaves the board functional.
>
> Rgds
>
> Kevin
>
> On 2021-01-07 19:07, Ray Molenkamp wrote:
>
>> Still waiting on hardware, but i prodded around a bit over the Christmas
>> break to prepare
>>
>> while the current script extracts the FX2 firmware for all models it only
>> seems to extract a single bitstream.
>>
>> You can extract the others with this patch. Do any of them match the stream
>> you captured off the bus?
>>
>> diff --git a/firmware/kingst-la/sigrok-fwextract-kingst-la2016
>> b/firmware/kingst-la/sigrok-fwextract-kingst-la2016
>> index a583218..8c5fc7f 100755
>> --- a/firmware/kingst-la/sigrok-fwextract-kingst-la2016
>> +++ b/firmware/kingst-la/sigrok-fwextract-kingst-la2016
>> @@ -192,5 +192,13 @@ if __name__ == "__main__":
>> res = qt_resources(sys.argv[1])
>>
>> writer = res_writer(res)
>> + writer.extract("fwfpga/LA1016A", "kingst-la1016a-fpga.bitstream")
>> writer.extract("fwfpga/LA2016A", "kingst-la2016a-fpga.bitstream")
>> + writer.extract("fwfpga/LA5016A", "kingst-la5016a-fpga.bitstream")
>> + writer.extract("fwfpga/LA1016", "kingst-la1016-fpga.bitstream")
>> + writer.extract("fwfpga/LA2016", "kingst-la2016-fpga.bitstream")
>> + writer.extract("fwfpga/LA5016", "kingst-la5016-fpga.bitstream")
>> + writer.extract("fwfpga/MS6218", "kingst-MS6218-fpga.bitstream")
>> + writer.extract("fwfpga/LA1010A_1", "kingst-LA1010A_1-fpga.bitstream")
>> + writer.extract("fwfpga/LA1010A_0", "kingst-LA1010A_0-fpga.bitstream")
>> writer.extract_re(r"fwusb/fw(.*)", r"kingst-la-\1.fw",
>> decoder=maybe_intel_hex_as_blob)
>>
>> --Ray
>>
>> On 2021-01-07 11:27 a.m., Kevin Grant wrote:
>>>
>>> Hello Helge,
>>>
>>> I have been researching the LA2016 a little to see if I can help with the
>>> Sigrok integration. In summary, I would say it cannot work on Linux or
>>> Windows at present.
>>>
>>> There are certainly issues in the protocol.c [1] file, for example some
>>> FPGA SPI register addresses are wrong; CTRL_THRESHOLD should be 0x68 and
>>> CTRL_TRIGGER should be 0x20. So, I don't understand how this could have
>>> been tested, unless the manufacturer has recently changed the fw and FPGA
>>> bitstream.
>>>
>>> That brings me to the next issue; the bitstream extracted from the OEM
>>> software using the python script [2] is different to the bitstream
>>> downloaded to the LA by the OEM software. I have some experimental code
>>> here to run the LA and found that while the LED would fade in/out as normal
>>> the unit would not run correctly. I then extracted the bitstream directly
>>> from the OEM software USB packets (it was different) and my experimental
>>> setup ran fine with that. So, either the python extractor code is somehow
>>> causing bitstream errors or the OEM is obfuscating the on-disk bitstream.
>>>
>>> Adjacent to the board LED there is an SO8 IC, no useful markings. It is a
>>> challenge-response authentication device, with one-wire UART comms on pin 3
>>> at 12900 baud. Some of the 'unkown commands' mentioned in protocol.c are
>>> related to this device. One of those commands reads a serial number as
>>> shown in the OEM software 'About' box. However, the purpose of this device
>>> is to prevent their software working with any cloned boards and shouldn't
>>> prevent any hardware functions. I recommend the 'unkown commands' (bRequest
>>> 96) are ignored/removed.
>>>
>>> IMO using the OEM fw and bitstream is an interim workaround, and a
>>> workaround should not be confused with a solution :-) It would be a better
>>> user and developer experience if we had open solutions; the fw is not too
>>> complicated (the FX2 is just passing bytes around, controlling endpoints)
>>> but the FPGA is perhaps a little tricky.
>>>
>>> Anyway, if anyone on this list has an LA2016 (or LA1016) working with
>>> PulseView, please let me know your setup and where you got the bitstream.
>>>
>>> Best regards,
>>>
>>> Kevin
>>>
>>> [1] src/hardware/kingst-la2016/protocol.c
>>>
>>> [2] https://sigrok.org/wiki/Kingst_LA2016
>>> <https://sigrok.org/wiki/Kingst_LA2016>
>>>
>>> On 2021-01-04 06:14, Helge Kruse wrote:
>>>
>>> Am 03.01.2021 um 16:39 schrieb Gerhard Sittig:
>>>
>>> Sorry, but I cannot see how this is "a compiler bug".
>>>
>>>
>>> Well, the C standard doesn't specify how the compiler builds the layout
>>> of structs. The GCC add an implementation specific extension with the
>>> __attribute__ to force packing of the struct. If the source code
>>> specifies to pack and the compiler doesn't pack it is, hmm at least
>>> strange. But there comes the -m-ms-bitfield option to the game. I
>>> actually curious how this evolved. I didn't found the story behind this.
>>>
>>> The number
>>> of leading underscores in the application source code should make
>>> the alarm bells go off, screamingly loud.
>>>
>>>
>>> Do you mean the underscores in __attribute__((__packed__) or did I
>>> missed something else?
>>>
>>> The proper thing to do is what you suggested. Use structs for
>>> internal application purposes. Translate the data at boundaries
>>> between the application and a communication channel, where one
>>> specific memory layout is expected. Leave the application part as
>>> transparent as it should be, don't "constrain" your application
>>> with the details of a physical transport. BTW using packed
>>> structs in the transport conversion isn't right either, it's as
>>> non-portable as packed structs in application code are.
>>>
>>>
>>> I found this in several OSS projects and use it in my personal
>>> applications too. But if the sigrok coding style at least discourages
>>> the use, I will improve my idea and use the write_uXX/read_uXX functions
>>> for the conversion between transfer layout and information struct in the
>>> application.
>>>
>>> I am not the author/maintainer of the LA-2016 driver, but I hope to
>>> contibute to the project.
>>>
>>> Moving existing drivers that suffer from portability issues can
>>> be considered low hanging fruit for those who want to help other
>>> users, and unbreak the operation of existing drivers in
>>> environments where they did not work before. Such a proper fix
>>> would no doubt get accepted into mainline, since it's a clear
>>> improvement, not just moving the problem to a different location.
>>>
>>>
>>> So, let's do it.
>>>
>>>
>>> Best regards,
>>> Helge
>>>
>>>
>>>
>>> _______________________________________________
>>> sigrok-devel mailing list
>>> [email protected]
>>> <mailto:[email protected]>
>>> https://lists.sourceforge.net/lists/listinfo/sigrok-devel
>>> <https://lists.sourceforge.net/lists/listinfo/sigrok-devel>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> sigrok-devel mailing list
>>> [email protected]
>>> <mailto:[email protected]>
>>> https://lists.sourceforge.net/lists/listinfo/sigrok-devel
>>> <https://lists.sourceforge.net/lists/listinfo/sigrok-devel>
>>
>> _______________________________________________
>> sigrok-devel mailing list
>> [email protected]
>> <mailto:[email protected]>
>> https://lists.sourceforge.net/lists/listinfo/sigrok-devel
>> <https://lists.sourceforge.net/lists/listinfo/sigrok-devel>
>
>
>
>
> _______________________________________________
> sigrok-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/sigrok-devel
_______________________________________________
sigrok-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sigrok-devel