2023-02-03 17:58:13 +08:00
|
|
|
# Build and test firmware
|
|
|
|
|
2023-05-10 17:17:14 +08:00
|
|
|
## Operating hints and warnings
|
|
|
|
|
|
|
|
* 😡 **Always** use grounding strap during dis/assembly or other cards' physical operation
|
|
|
|
* 😡 **Always** power off devices before un/plugging
|
|
|
|
* 🧐 If needed to power-cycle the crate, wait at least 30 seconds before turning them on
|
|
|
|
* 🙅 Avoid the boards touching conductive materials - wires, metals. Use at
|
|
|
|
least plastic ESD bags if you need the cards to be put at the desk or any other surface.
|
|
|
|
* 💁 Be gentle to the EEM ports and any other connectors. Support them when plugging, hold when unplugging
|
|
|
|
* 🙆 If you need to take the cards out, take them out one-by-one from the end, unplug EEM and cables if you feel high tension
|
2023-10-12 16:25:49 +08:00
|
|
|
* 🙆 Use dedicated power supplies for each crate, preferably given or equivalent to given by us
|
|
|
|
* 🙅 Avoid unnecessary inserts and pullouts, especially of MMCX cables
|
|
|
|
|
|
|
|
Failure to comply with this voids the warranty.
|
2023-05-10 17:17:14 +08:00
|
|
|
|
2023-02-03 17:58:13 +08:00
|
|
|
## Kasli standalone
|
|
|
|
|
|
|
|
### Checklist
|
|
|
|
|
|
|
|
1. Build firmware (see commands below)
|
|
|
|
2. Flash firmware and settings
|
2023-07-05 11:33:03 +08:00
|
|
|
3. Test hardware with the PSU, which is going to be shipped
|
2023-02-03 17:58:13 +08:00
|
|
|
4. Create a flash-drive with `device_db.py` file for customers (FAT32)
|
|
|
|
|
2023-05-05 12:32:47 +08:00
|
|
|
### CLI commands - build and flash
|
2023-02-03 17:58:13 +08:00
|
|
|
|
|
|
|
```shell
|
|
|
|
mkdir <variant>
|
|
|
|
cd <variant>/
|
2023-05-05 12:32:47 +08:00
|
|
|
nix develop github:m-labs/artiq\?ref=release-7
|
|
|
|
# master/standalone only
|
2023-02-03 17:58:13 +08:00
|
|
|
artiq_mkfs -s ip 192.168.1.75 kasli.config
|
|
|
|
artiq_flash storage -f kasli.config
|
|
|
|
artiq_ddb_template -o device_db.py <variant>.json
|
|
|
|
python -m artiq.gateware.targets.kasli_generic <variant>.json
|
|
|
|
artiq_flash --srcbuild -d artiq_kasli/<variant>/
|
|
|
|
```
|
|
|
|
|
2023-02-13 14:15:36 +08:00
|
|
|
## Kasli-SoC (zynq)
|
|
|
|
|
|
|
|
### Checklist
|
|
|
|
|
|
|
|
1. Build firmware (see commands below) for SD card variant
|
|
|
|
2. Copy `results/boot.bin` to the SD card
|
|
|
|
3. Insert SD card to the Kasli-SoC and boot
|
|
|
|
4. Change IP from the default one: `artiq_coremgmt -D 192.168.1.56 config write -s ip 192.168.1.75`
|
|
|
|
5. Reboot and check it works on new IP address
|
2023-07-05 11:33:03 +08:00
|
|
|
6. Test hardware with the PSU, which is going to be shipped
|
2023-02-13 14:15:36 +08:00
|
|
|
7. Create a flash-drive with `device_db.py` file for customers (FAT32)
|
|
|
|
|
2023-05-05 12:32:47 +08:00
|
|
|
### CLI commands - build and flash
|
2023-02-13 14:15:36 +08:00
|
|
|
|
|
|
|
```shell
|
|
|
|
mkdir <variant>
|
|
|
|
cd <variant>/
|
2023-05-05 12:32:47 +08:00
|
|
|
nix develop git+https://git.m-labs.hk/m-labs/artiq-zynq\?ref=release-7
|
2023-02-13 14:15:36 +08:00
|
|
|
artiq_ddb_template -o device_db.py <variant>.json
|
2023-05-05 12:32:47 +08:00
|
|
|
nix build -L --impure --expr 'let fl = builtins.getFlake "git+https://git.m-labs.hk/m-labs/artiq-zynq?ref=release-7"; in (fl.makeArtiqZynqPackage {target="kasli_soc"; variant="[master, standalone, satellite]"; json=<full path to the json description>;}).kasli_soc-[master, standalone, satellite]-sd'
|
2023-02-13 14:15:36 +08:00
|
|
|
# copy `results/boot.bin` to the SD card
|
|
|
|
# insert SD card to the Kasli-SoC and boot
|
2023-05-05 12:50:24 +08:00
|
|
|
artiq_coremgmt -D 192.168.1.56 config write -s ip 192.168.1.75 # or just place extra/CONFIG.TXT near the boot.bin on SD card
|
2023-05-05 12:32:47 +08:00
|
|
|
# update firmware (alternative to copy to SD, if ARTIQ already running)
|
2023-03-07 13:31:51 +08:00
|
|
|
artiq_coremgmt config write -f boot result/boot.bin
|
2023-02-13 14:15:36 +08:00
|
|
|
# reboot via power supply
|
2023-05-05 12:32:47 +08:00
|
|
|
```
|
|
|
|
|
|
|
|
## Testing (common)
|
|
|
|
|
|
|
|
```
|
2023-02-13 14:15:36 +08:00
|
|
|
artiq_sinara_tester
|
|
|
|
```
|
|
|
|
|
2023-05-05 12:32:47 +08:00
|
|
|
Follow `artiq_sinara_tester` instructions for testing the hardware. For more detailed information,
|
|
|
|
you can use this book's pages, or if there is no instruction for testing your hardware, please add them to this book.
|
|
|
|
|
2023-04-14 11:40:19 +08:00
|
|
|
### Known issues
|
|
|
|
|
2023-06-02 17:32:04 +08:00
|
|
|
* ~~[artiq-zynq#197](https://git.m-labs.hk/M-Labs/artiq-zynq/issues/197) - some cards (Sampler, Mirny, Zotino and others)
|
|
|
|
do not work properly with some EEM ports. You might need to connect the card to the other ports until it gets working.~~
|
|
|
|
resolved (hopefully)
|
2023-04-14 11:40:19 +08:00
|
|
|
|
2023-02-13 14:15:36 +08:00
|
|
|
## Master-satellite setups
|
|
|
|
|
|
|
|
1. Change `base` in JSON to the respective `master` or `satellite`, add `"enable_sata_drtio": true` if needed to the master,
|
|
|
|
remove `core_addr` in satellites
|
|
|
|
2. Build and flash firmware for each crate with JSONs (see instructions above)
|
2023-05-05 12:32:47 +08:00
|
|
|
3. Create composed `device_db.py`: e.g. `artiq_ddb_template -o device_db.py -s 1 <satellite1>.json -s 2 <satellite2>.json <master>.json`
|
2023-02-13 14:15:36 +08:00
|
|
|
4. Connect satellite crates to the master respective to their numbers via the fiber (see example picture)
|
|
|
|
![](img/master_sat_connection.jpg)
|
|
|
|
5. Ethernet is needed only for master
|
|
|
|
6. Test hardware as it would be one crate
|