Implementing bare-metal RISC-V on the Nexys-A7-100T FPGA [closed] - fpga

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed last year.
Improve this question
I've recently taken up a project where I must implement a bare-metal RISC-V processor on the Nexys A7 100T FPGA board and run a simple hello world code on it.
However, I'm a bit new to RISC-V and have been struggling to get started with the bare-metal implementation. I've managed to implement RISC-V running on Debian Linux onto the board using the Github repository from Eugene Tarassov who is a principal engineer at Xilinx but this obviously did not meet the project specification since it's not bare-metal.
FPGA RISC-V SoC running Debian Linux: https://github.com/eugene-tarassov/vivado-risc-v#readme
I would greatly appreciate any books, online resources, tutorials or guidance that would help with this project. Thanks

For your hands-on check following github resources:
Rudi-RV32I
Picorv32
RISC-V microcontroller-like SoC (VHDL)
Nexys A7 port
"Hello world" example program
RISCV-Formal
Since you have asked for online resources check some of the following links:
RISCV Specifications
RISCV Technical Forums
RISCV Tech wiki
RISCV University Resources
From Custom CPU to Hello World in 30 Minutes
RISCV Publications
Book(s)
The RISC-V Reader: An Open Architecture Atlas
RISC-V Assembly Language
A general RISCV archive git page:
RISCV Archive

Related

Why can I run x86 binary on ARM? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 1 year ago.
Improve this question
I recently compiled a C program I wrote with gcc on my x86 intel MacBook - I downloaded this binary onto my M1 MacBook and it seems to run fine... This challenges my understanding because I figured it had to be complied for a specific instruction set (x86 in this case).. I wonder if there is some software layer in my MacBook automatically 'assembling' the x86 into ARM
Any ideas?
MacOS contains Rosetta 2 software that does dynamic binary translation from x86, so that x86 software can be run on the M1 CPU. Not quite as efficient as code compiled directly from C to AArch64 machine code, but it works.
You can read more here:
https://developer.apple.com/documentation/apple-silicon/about-the-rosetta-translation-environment
Stack Overflow has a tag for it: rosetta-2.
There's also a question on the Apple site: How does Rosetta 2 work? where answers point out that the translation is done once and cached, so it can spend significant time optimizing the translation. (For non-JITed x86 code.)
Apple decided to transition from Intel to arm processors, which is a big decision due to the number of applications developed for the intel architecture over the years.
The Arm and the Intel instruction set are different, and programs compiled for Intel's architecture cannot natively run on the Arm's architecture. The instruction sets are protected, and it is illegal for a company to copy the instruction set of a competitor.
Rosetta is the solution to this instruction set incompatibility problem. Rosetta is an instruction translation that transforms Intel instructions into arm instructions. The performance impact can be negligible due to the performances of the M1 chip but the long term solution is to recompile the x86_64 application to the M1 architecture. XCode has already released the toolchain for this.
If you want to dig into the subject I recommend this article about the difference between the Intel and Arm architecture.

Completely open sourced ARM board [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Closed 8 years ago.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Improve this question
I am learning to customize the Linux kernel to make it portable on embedded systems. To test my customized kernel , i want a completely open sourced ARM board. I investigated the Raspberry pi but some it's firmware (i.e. "start.elf") is not open source. Can anybody name an ARM board which is completely open source?
Also are there any such board whose ROM/AVRAM contents can also be replaced?
Thank you !
If by "completely open source" you mean open source bootloader, kernel and OS (correct me if I'm wrong), then I would recommend one of Beagle family boards -- they are inexpensive, user friendly and have a good community support. Their open source stack consists of U-Boot, Linux kernel and one of few available distributions. If you need advanced features, check out EVM's by Texas Instrument, but they cost much more.
Jetson-TK1 from nvidia, is a developer platform,
does have u-boot loader, Linux Kernel and rootfs,
The board layout is also shared, you can recompile things for you.
It comes with 2GB RAM, a 2.3GHz Quad core processor, with GPU that is ready for CUDA kind of high level programming
http://www.newegg.com/Product/Product.aspx?Item=N82E16813190005

SCADA Protocol - iec-104 [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I am researching the IEC 60870-5 family protocols and in particular IEC-101 and IEC-104, for a university project.
Although purchasing the IEC-101 and IEC-104 standards, i am still left with fundamental questions that i can't seem to find answers for using Google.
I am now focusing on understanding every Type Identification - its purpose, what its use, how to use it and draw a simple flow of each.
The standards doesn't supply the necessary information about the commands.
Can anyone refer me to some website where these things are explained or any forum where i can ask question about these standards?
Any help is appreciated.
We developed a new implementation of IEC 60870-5-104 as a part of the Eclipse SCADA project. It available since the 0.2.0 M3 Milestone build. (https://www.eclipse.org/eclipsescada/news/2014/07/01/releases__0_1_3_and_0_2_0_m3.html)
You can also use it standalone without the other Eclipse SCADA dependencies (it has some dependencies on slf4j and netty and some other minor stuff).
ScadaBR has both protocols implemented, and is OpenSource... so feel free to tackle it and grab what you need from its source.
The good thing is that with some time, you can backward-engineer the IEC protocol. We use basically Luciol in our project. Check their site!
http://www.luciol.info/gb/support/support_download.html
You can get the codes from Sourceforge aswell
http://sourceforge.net/projects/luciol/
Regards,
I found the book Practical Modern SCADA Protocols DNP3, IEC 60870.5 And Related Systems to be the best help out there the standard specification is a bit dry.
Look in Chapter 8 Fundamentals of IEC 60870-5, Section 8.5.2 ASDU Structure. It explains what the type ID is for and what they do.

I2C Driver in Linux [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 5 years ago.
Improve this question
I am aware of I2C in a very basic level which relies inside linux kernel, but no clue to implement a basic I2C driver.
Trying to moving for a start in I2C device driver.
could you please suggest any beginner tutorial with source code mapping !!
linux-source/Documentation/i2c/ has lot of the information you'd need. .../writing-clients.txt is a good place to start.
Have a look at the online version:
https://www.kernel.org/doc/Documentation/i2c/writing-clients
There is an okay sort of a tutorial at:
http://renjucnair.blogspot.ca/2012/01/writing-i2c-client-driver.html
Here is a good commentary on someone writing an i2c driver and has a tutorial feel to it:
http://www.embedded-bits.co.uk/2009/i2c-in-the-2632-linux-kernel/
Here is some sample code:
http://code.google.com/p/ldd-templates/source/browse/drivers/i2c/sample-i2c-client.c
I2C driver is implemented as a platform driver in linux kernel.So first you need to understand the linux model for platform devices.
Please go through below documentation under linux kernel for platform devices:
https://www.kernel.org/doc/Documentation/driver-model/platform.txt
You also need to understand the bus structure under linux kernel.Please refer to the below link:
http://www.mjmwired.net/kernel/Documentation/driver-model/bus.txt
Now you can google for I2C drivers and further study.
Have a look at the smbus modules available for many programming languages...then write the driver for your i2c device around that.

Free PIC C compiler [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I am looking for a free, and possibly open source C compiler for PIC. I might go without C, but I would like to get both options.
There are various compilers out there, but since I have never done PIC development before, I am looking for user experience and advice. I am targetting the PIC16F88x family
Try SDCC - an open source Small Device C Compiler
I used it for small project during school and it worked great.
http://sdcc.sourceforge.net/
I am mentioning the PIC C compilers here, which are best when it comes to PIC Microcontroller Programming.
MPLAB C18 Compiler
MikroC Pro for PIC
CCS Compiler for PIC
You can read more about them on this post Top 3 PIC C Compiler, they have given a comparison between these 3 PIC Compilers i.e. there advantages and disadvantages.
Mikroelektronika has a series of compilers, including Pascal and C with very good libraries for most of the stuff you'll need, such as CompactFlash, USB, LCD and etc.
It's not free, but the free version has enough juice to allow you do to most of the basic stuff.
I recently got started with PIC c programming, and had some success with the lite version (free, but not open-source) of the Hi-Tech C compiler. I was using the PIC16F690 so it should work well for you too.
You can download the compiler here:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en542849
Have you seen the sourceboost c compiler?
This isn't open source but there is a free cost version details here. It seems to work very well.
You can try the CC5X C Compiler from http://www.bknd.com/cc5x/ it has an free edition too.
There is the hi-tech c compiler lite from microchip available here

Resources