bug_fixes_integration_tx
David Michaeli 2021-11-01 18:08:44 +02:00
rodzic 984a3b3ec8
commit 536ec26b8b
2 zmienionych plików z 5 dodań i 8 usunięć

Wyświetl plik

@ -45,6 +45,8 @@ cd cariboulite
Following these steps, the RPI has to be rebooted before starting using it as an SDR.
To compile the API library and SoapySDR API from code please click [here](/software/libcariboulite/README.md)
# SMI Interface
Unlike many other HAT projects, CaribouLite utilizes the **SMI** (Secondary Memory Interface) present on all the 40-pin RPI versions. This interface is not thoroughly documented by both Raspberry-Pi documentation and Broadcomm's reference manuals. An amazing work done by [Lean2](https://iosoft.blog/2020/07/16/raspberry-pi-smi/) (code in [git repo](https://github.com/jbentham/rpi)) in hacking this interface has contributed to CaribouLite's technical feasibility. A deeper overview of the interface is provided by G.J. Van Loo, 2017 [Secondary_Memory_Interface.pdf](docs/smi/Secondary%20Memory%20Interface.pdf). The SMI interface allows exchanging up to ~500 Mbit/s (depending on the FPGA, data-bus width, etc.) between the RPI and the HAT, and yet, the results vary between the different versions of RPI. The results further depend on the specific RPI version's DMA speeds.

Wyświetl plik

@ -64,18 +64,13 @@ int caribou_smi_setup_stream(caribou_smi_st* dev,
`num_buffers` - is the number of batch buffers to allocate - for fluent buffer swapping
`cb` - data callback function that is triggered every time a buffer is ready to be served.
`serviced_context` - the data "requester" that is being serviced by the I/Q data. In most cases that is a higher layered driver / API.
The returned integer is the stream ID used for further operations.
Notes: Once the stream is created it is operational **but paused!** to activate it see below.
Notes: Once the stream is created it is operational **but paused!** to activate it use the following function (on the specific stream ID). This function is used also for pausing the stream (run = 0).
```
int caribou_smi_run_pause_stream (caribou_smi_st* dev, int id, int run);
```
Gracefully disposing the stream is done using the "destroy" function
```
int caribou_smi_destroy_stream(caribou_smi_st* dev, int id);
```
```
char* caribou_smi_get_error_string(caribou_smi_error_en err);
```