Hello,1. We have HW configuration that includes:
- Achilles card with Altera Arria-10 SoC (Reflex company) (mother board) - ADRV9008-1 Evaluation board (doter board)
2. We prepared ADRV9008 firmware package based on reference design "no-OS/projects/adrv9009"copied from https://github.com/analogdevicesinc/no-OS (at 05 March 2019) We little bit changed this package. List of the changes:
- The SPI lowest layer driver is used from Altera HAL- ADIHAL_wait_us() uses alt_busy_sleep() (Altera HAL function)- mdelay(), based on alt_busy_sleep() - GPO signals for reset ADRV9008 and AD9528
3. We successfully incorporated ADRV9008 firmware package with our project with following configuration details (relevant only)
- ARM (Arria-10 SoC) is not in use - Microprocessor Nios II is used - Altera FPGA IP, Frequency 192 MHz - SPI - Altera FPGA IP The project runs on the target (Nios) and ADRV9008 initialization (headless.c/main) is successful.
4. On the next step we migrate this project to ARM (Arria10 SoC) running Linux.
We left the same - SPI (Altera FPGA IP), with the same driver.The other changes are minor:
- Replace lowest layer of Memory Mapped register access (SPI registers, GPIO etc.) to mmap() Linux API. - ADIHAL_wait_us() uses usleep() Linux API. - mdelay(), uses usleep().
5. In this new project (Arria 10 ARM) we encountered to the following problem.
ERROR: 97: LoadHex() line checksum is invalid error: TALISE_loadArmFromBinary() failed Notes:
a) My additional debugging printf added before "Error: 97" point of code (function TALISE_verifyArmCheckSum)
shows : buildTimeChecksum=0, calculatedChecksum=0xffffffff
b) We compared several times the new (Arm) and the old (Nios) projects (including firmware folder with ARM's programming code). The differences are as mentioned above, very minor.c) We run the new and old projects on the same physical card (Achilles+ADRV9008 Ev. board).
Please help to find the problem. Yakov
Why is the build time checksum showing = 0 ?
Moving this post to Linux software subspace for comments.
I don't know the build time, I know only when I loaded the gitHub (I pressed clone or download button and loaded ZIP)
https://github.com/analogdevicesinc/no-OS (at 05 March 2019).
I do not know how to get "build time checksum", Sorry!
But the code that we run almost absolutely identical for Nios and Linux projects as I mentioned in my post.
Note: I forget to bullet that first, "good", project on Nios II has no Linux OS.
We found the reason of the problem. The Achilles card, that running build in Linux, has some build-in program that started automatically on power up. This program periodically (0.5~1S) communicates with the same SPI addresses that we use too. Due to ADRV9008 programming has 3-5 seconds and thousands addresses to SPI, the build-in program breaks this programming process in middle. After we stops this program, all our program works perfect.
Note: This build in program is added by Achilles card manufacturer and not part of Linux distribution,