Neotron Pico

NeoTron Pico.

back to microcontrollers page.

sub pages: assembly, BMC, BIOS, os,

Links

Github Neotron Pico, Tindie NeoTron Pico v1.1 Full Kit,

local links

Compaq TFT 8030, HP L1940 T,

History

2024-08-15: the rust toolchain is now

tingo@kg-core1:~/personal/projects/2023/rust/embedded/neotron/Neotron-Pico-BIOS $ rustup check
stable-x86_64-unknown-freebsd - Up to date : 1.80.1 (3f5fd8dd4 2024-08-06)
nightly-x86_64-unknown-freebsd - Up to date : 1.82.0-nightly (13a52890d 2024-08-14)
rustup - Up to date : 1.27.1

2023-09-17: updated the rust toolchain via rustup update. Check

tingo@kg-core1:~/personal/projects/2023/rust/embedded/neotron/Neotron-Pico-BIOS $ rustup check
stable-x86_64-unknown-freebsd - Up to date : 1.72.0 (5680fa18f 2023-08-23)
nightly-x86_64-unknown-freebsd - Up to date : 1.74.0-nightly (7d9bce327 2023-09-16)
rustup - Up to date : 1.26.0

2023-07-13: The Neotron Pico PCB is 244 x 171 mm, the largest size for a microATX motherboard is 244 x 244 mm.

2023-07-10: tried with a different monitor (HP L1940 T) this one get the full picture from the Neotron, both in logo and startup screens. Also reports mode as 640 x 480 @ 60 Hz.

2023-07-09: the monitor I'm currently using (Compaq TFT 8030) reports the mode as 640x480, Horz Freq: 31.5 kHz, Vert Freq: 60.0 kHz.

2023-07-05: added a CR2032 battery, and now the RTC remember date and time, as set with the 'date' command.

2023-07-04: SDcard - I insert a 64 GB SDcard (exFAT). Now the 'lshw' command tells me under Block Devices that SDCard0 has bs=512, size=59392 MB. The 'lsblk' command tells me the same, with other words:

> lsblk
Block Devices:
Device 0:
         Name: SdCard0
         Type: SecureDigitalCard
   Block size: 512
   Num Blocks: 121634816
    Card size: 58.0 GB (62.2 GB)
    Ejectable: false
    Removable: true
Media present: true
    Read only: false

when I try the 'dir' command, this happens

> dir
Listing files on Block Device 0, /
Error: FormatError("Partition type not supported")

so probably no exFAT support. I replace the SdCard with one that is FAT32-formatted.

> dir
Listing files on Block Device 0, /
        0 file(s)              0 bytes

yep, that was it. I put some files on the SDCard (from the Neotron-SDK repository) and now I can see them with 'dir', load them with 'load' and run them with 'run'. This stuff works.

2023-07-04: connecting up a VGA monitor, I get output. so things are working. Nice. Later - added a PS/2 keyboard, I can type commands. Commands are: help, dir, config, lsblk, readblk, dir, lshw, hexdump, run, loadf, load, screen_clear, screen_bench, screen_fill, screen_mandel, input_kbtest,

2023-07-04: programming the Pico with the Neotron BIOS. I wired up a picopobe to the debug connector in the Pico (SWCLK, GND, SWDIO) and powered on the Neotron. check for the probe

tingo@kg-core1:~/personal/projects/2023/rust/embedded/neotron/Neotron-Pico-BIOS $ probe-run --list-probes
the following probes were found:
[0]: Picoprobe CMSIS-DAP (VID: 2e8a, PID: 000c, Serial: E660D4A0A71CA332, CmsisDap)

build and run

tingo@kg-core1:~/personal/projects/2023/rust/embedded/neotron/Neotron-Pico-BIOS $ DEFMT_LOG=debug cargo run --release
    Updating git repository `https://github.com/neotron-compute/neotron-bmc`
  Downloaded ascii-canvas v3.0.0
  Downloaded term v0.7.0
  Downloaded siphasher v0.3.10
  Downloaded precomputed-hash v0.1.1
  Downloaded atomic-polyfill v1.0.2
  Downloaded fixedbitset v0.4.2
  Downloaded arrayvec v0.7.2
  Downloaded phf_shared v0.10.0
  Downloaded debug-helper v0.3.13
  Downloaded pio-proc v0.2.2
  Downloaded new_debug_unreachable v1.0.4
  Downloaded rp2040-hal-macros v0.1.0
  Downloaded pio-parser v0.2.2
  Downloaded lalrpop-util v0.19.12
  Downloaded diff v0.1.13
  Downloaded shared-bus v0.2.5
  Downloaded string_cache v0.8.7
  Downloaded ena v0.14.2
  Downloaded defmt-macros v0.3.4
  Downloaded bit-vec v0.6.3
  Downloaded dirs-next v2.0.0
  Downloaded defmt v0.3.2
  Downloaded bit-set v0.5.3
  Downloaded pio v0.2.1
  Downloaded rp2040-boot2 v0.3.0
  Downloaded crc-any v2.4.3
  Downloaded codespan-reporting v0.11.1
  Downloaded petgraph v0.6.3
  Downloaded rp2040-pac v0.4.0
  Downloaded mcp794xx v0.3.0
  Downloaded ds1307 v0.5.0
  Downloaded lalrpop v0.19.12
  Downloaded panic-probe v0.2.1
  Downloaded rp2040-hal v0.8.1
  Downloaded rtcc v0.3.0
  Downloaded rp-pico v0.7.0
  Downloaded 36 crates (1.7 MB) in 1.31s
   Compiling proc-macro2 v1.0.56
   Compiling quote v1.0.26
   Compiling unicode-ident v1.0.8
   Compiling autocfg v1.1.0
   Compiling syn v1.0.109
   Compiling libc v0.2.142
   Compiling cfg-if v1.0.0
   Compiling version_check v0.9.4
   Compiling nb v1.1.0
   Compiling nb v0.1.3
   Compiling void v1.0.2
   Compiling cortex-m v0.7.7
   Compiling semver-parser v0.7.0
   Compiling memchr v2.5.0
   Compiling semver v0.9.0
   Compiling proc-macro-error-attr v1.0.4
   Compiling embedded-hal v0.2.7
   Compiling lock_api v0.4.9
   Compiling parking_lot_core v0.9.7
   Compiling io-lifetimes v1.0.10
   Compiling dirs-sys-next v0.1.2
   Compiling rustc_version v0.2.3
   Compiling syn v2.0.15
   Compiling proc-macro-error v1.0.4
   Compiling indexmap v1.9.3
   Compiling num-traits v0.2.15
   Compiling paste v1.0.12
   Compiling crunchy v0.2.2
   Compiling smallvec v1.10.0
   Compiling log v0.4.17
   Compiling rustix v0.37.19
   Compiling scopeguard v1.1.0
   Compiling cortex-m-rt v0.7.3
   Compiling thiserror v1.0.40
   Compiling aho-corasick v1.0.1
   Compiling bare-metal v0.2.5
   Compiling dirs-next v2.0.0
   Compiling errno v0.3.1
   Compiling num-integer v0.1.45
   Compiling siphasher v0.3.10
   Compiling tiny-keccak v2.0.2
   Compiling hashbrown v0.12.3
   Compiling thiserror-impl v1.0.40
   Compiling regex-syntax v0.7.1
   Compiling defmt v0.3.2
   Compiling bitflags v1.3.2
   Compiling phf_shared v0.10.0
   Compiling regex v1.8.1
   Compiling term v0.7.0
   Compiling num_enum_derive v0.5.11
   Compiling cortex-m-rt-macros v0.7.0
   Compiling parking_lot v0.12.1
   Compiling either v1.8.1
   Compiling semver v1.0.17
   Compiling once_cell v1.17.1
   Compiling precomputed-hash v0.1.1
   Compiling vcell v0.1.3
   Compiling new_debug_unreachable v1.0.4
   Compiling defmt-macros v0.3.4
   Compiling fixedbitset v0.4.2
   Compiling critical-section v1.1.1
   Compiling bit-vec v0.6.3
   Compiling string_cache v0.8.7
   Compiling volatile-register v0.2.1
   Compiling bit-set v0.5.3
   Compiling petgraph v0.6.3
   Compiling itertools v0.10.5
   Compiling ena v0.14.2
   Compiling num_enum v0.5.11
   Compiling lalrpop-util v0.19.12
   Compiling ascii-canvas v3.0.0
   Compiling defmt-parser v0.3.2
   Compiling is-terminal v0.4.7
   Compiling unicode-xid v0.2.4
   Compiling diff v0.1.13
   Compiling regex-syntax v0.6.29
   Compiling bitfield v0.13.2
   Compiling chrono v0.4.24
   Compiling rp2040-pac v0.4.0
   Compiling debug-helper v0.3.13
   Compiling stable_deref_trait v1.2.0
   Compiling crc-any v2.4.3
   Compiling rustc_version v0.4.0
   Compiling lalrpop v0.19.12
   Compiling atomic-polyfill v0.1.11
   Compiling gcd v2.3.0
   Compiling arrayvec v0.7.2
   Compiling byteorder v1.4.3
   Compiling pio v0.2.1
   Compiling fugit v0.3.6
   Compiling rp2040-hal-macros v0.1.0
   Compiling heapless v0.7.16
   Compiling rp2040-boot2 v0.3.0
   Compiling embedded-dma v0.2.0
   Compiling rtcc v0.3.0
   Compiling unicode-width v0.1.10
   Compiling atomic-polyfill v1.0.2
   Compiling termcolor v1.2.0
   Compiling rp-pico v0.7.0
   Compiling usb-device v0.2.9
   Compiling defmt-rtt v0.4.0
   Compiling rand_core v0.6.4
   Compiling panic-probe v0.2.1
   Compiling codespan-reporting v0.11.1
   Compiling hash32 v0.2.1
   Compiling neotron-pico-bios v0.5.1 (/zs/tingo/personal/projects/2023/rust/embedded/neotron/Neotron-Pico-BIOS)
   Compiling pc-keyboard v0.7.0
   Compiling neotron-common-bios v0.8.0
   Compiling ds1307 v0.5.0
   Compiling mcp794xx v0.3.0
   Compiling neotron-bmc-protocol v0.1.0 (https://github.com/neotron-compute/neotron-bmc?tag=v0.5.2#bb08ff24)
   Compiling embedded-sdmmc v0.5.0
   Compiling neotron-bmc-commands v0.1.0 (https://github.com/neotron-compute/neotron-bmc?tag=v0.5.2#bb08ff24)
   Compiling shared-bus v0.2.5
   Compiling rp2040-hal v0.8.1
   Compiling pio-parser v0.2.2
   Compiling pio-proc v0.2.2
    Finished release [optimized + debuginfo] target(s) in 1m 26s
     Running `probe-run --chip RP2040 --measure-stack target/thumbv6m-none-eabi/release/neotron-pico-bios`
(HOST) INFO  flashing program (44 pages / 176.00 KiB)
(HOST) INFO  success!
(HOST) INFO  painting 4.00 KiB of RAM for stack usage estimation
────────────────────────────────────────────────────────────────────────────────
INFO  Neotron BIOS v0.5.1 (git:v0.5.1-4-g83a12dc) starting...
└─ neotron_pico_bios::__cortex_m_rt_main @ src/main.rs:340
INFO  Clocks OK
└─ neotron_pico_bios::__cortex_m_rt_main @ src/main.rs:404
INFO  SCKDV: 2
└─ neotron_pico_bios::__cortex_m_rt_main @ src/main.rs:406
INFO  MCP7940N not found
└─ neotron_pico_bios::rtc::{impl#0}::new @ src/rtc.rs:43
INFO  DS1307 found, and has started ticking
└─ neotron_pico_bios::rtc::{impl#0}::new @ src/rtc.rs:55
INFO  Time: 2000-01-01 00:00:00
└─ neotron_pico_bios::{impl#1}::build @ src/main.rs:571
INFO  Ticks at boot: 0
└─ neotron_pico_bios::{impl#1}::build @ src/main.rs:582
INFO  Pins OK
└─ neotron_pico_bios::__cortex_m_rt_main @ src/main.rs:436
DEBUG DMA set-up complete
└─ neotron_pico_bios::vga::init @ src/vga/mod.rs:1019
DEBUG State Machines running
└─ neotron_pico_bios::vga::init @ src/vga/mod.rs:1024
DEBUG Core 1 stack: 20041000, 1024 bytes
└─ neotron_pico_bios::vga::init @ src/vga/mod.rs:1041
DEBUG Resetting CPU1...
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1071
DEBUG Setting up stack...
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1079
DEBUG Stack ptr is 0x20041ff4
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1097
DEBUG Stack bottom is 0x20041000
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1098
DEBUG Stack top is 0x[0, 2003a001, 20041000, 100013a1]
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1099
DEBUG Sending command 0...
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1118
DEBUG Draining FIFO...
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1122
DEBUG Pushing to FIFO...
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1127
DEBUG Getting response from FIFO...
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1130
DEBUG Got 0
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1140
DEBUG Sending command 0...
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1118
DEBUG Draining FIFO...
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1122
DEBUG Pushing to FIFO...
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1127
DEBUG Getting response from FIFO...
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1130
DEBUG Got 0
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1140
DEBUG Sending command 1...
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1118
DEBUG Pushing to FIFO...
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1127
DEBUG Getting response from FIFO...
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1130
DEBUG Got 1
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1140
DEBUG Sending command 10000100...
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1118
DEBUG Pushing to FIFO...
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1127
DEBUG Getting response from FIFO...
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1130
DEBUG Got 10000100
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1140
DEBUG Sending command 20041ff4...
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1118
DEBUG Pushing to FIFO...
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1127
DEBUG Getting response from FIFO...
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1130
DEBUG Got 20041ff4
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1140
DEBUG Sending command 10008941...
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1118
DEBUG Pushing to FIFO...
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1127
DEBUG Getting response from FIFO...
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1130
DEBUG Got 10008941
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1140
DEBUG Waiting for Core 1 to start...
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1152
DEBUG Core 1 started!!
└─ neotron_pico_bios::vga::multicore_launch_core1_with_stack @ src/vga/mod.rs:1156
DEBUG Core 1 running
└─ neotron_pico_bios::vga::init @ src/vga/mod.rs:1054
INFO  VGA OK
└─ neotron_pico_bios::__cortex_m_rt_main @ src/main.rs:447
DEBUG MCP23S17 IRQ pins: 0b00000000 (real 0b11111111)
└─ neotron_pico_bios::{impl#1}::io_poll_interrupts @ src/main.rs:939
DEBUG req: [c0, 01, 20, 78]
└─ neotron_pico_bios::{impl#1}::bmc_do_request @ src/main.rs:1069
DEBUG res: [a0, 76, 30, 2e, 35, 2e, 32, 2d, 35, 2d, 67, 37, 35, 63, 64, 31, 32, 64, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, db] (4)
└─ neotron_pico_bios::{impl#1}::bmc_do_request @ src/main.rs:1086
DEBUG req: [c3, 72, 89, 0e]
└─ neotron_pico_bios::{impl#1}::bmc_do_request @ src/main.rs:1069
DEBUG res: [a0, 69] (4)
└─ neotron_pico_bios::{impl#1}::bmc_do_request @ src/main.rs:1086
DEBUG req: [c2, 71, 00, ec]
└─ neotron_pico_bios::{impl#1}::bmc_do_request @ src/main.rs:1069
DEBUG res: [a0, 69] (4)
└─ neotron_pico_bios::{impl#1}::bmc_do_request @ src/main.rs:1086
DEBUG req: [c3, 73, 7f, d7]
└─ neotron_pico_bios::{impl#1}::bmc_do_request @ src/main.rs:1069
DEBUG res: [a0, 69] (4)
└─ neotron_pico_bios::{impl#1}::bmc_do_request @ src/main.rs:1086
DEBUG req: [c2, 70, 07, ec]
└─ neotron_pico_bios::{impl#1}::bmc_do_request @ src/main.rs:1069
DEBUG res: [a0, 69] (4)
└─ neotron_pico_bios::{impl#1}::bmc_do_request @ src/main.rs:1086
DEBUG req: [c3, 72, 74, f3]
└─ neotron_pico_bios::{impl#1}::bmc_do_request @ src/main.rs:1069
DEBUG res: [a0, 69] (4)
└─ neotron_pico_bios::{impl#1}::bmc_do_request @ src/main.rs:1086
DEBUG req: [c2, 70, 07, ec]
└─ neotron_pico_bios::{impl#1}::bmc_do_request @ src/main.rs:1069
DEBUG res: [a0, 69] (4)
└─ neotron_pico_bios::{impl#1}::bmc_do_request @ src/main.rs:1086
DEBUG req: [c3, 72, 61, 98]
└─ neotron_pico_bios::{impl#1}::bmc_do_request @ src/main.rs:1069
DEBUG res: [a0, 69] (4)
└─ neotron_pico_bios::{impl#1}::bmc_do_request @ src/main.rs:1086
DEBUG req: [c2, 70, 07, ec]
└─ neotron_pico_bios::{impl#1}::bmc_do_request @ src/main.rs:1069
DEBUG res: [a0, 69] (4)
└─ neotron_pico_bios::{impl#1}::bmc_do_request @ src/main.rs:1086
DEBUG Idle...
└─ neotron_pico_bios::power_idle @ src/main.rs:2047
DEBUG Idle...
└─ neotron_pico_bios::power_idle @ src/main.rs:2047

nice.

2023-07-04: bought a 39-1512 27 W power adapter for NOK 199.90 from Clas Ohlson. Max current is 2.25 A, and it can be switched to 12 V. Verified the 12V setting, found a plug with ID 2.1 mm, inserted it and verified that the center pin is positive, and that the voltage is 12 V.

2023-06-13: today I got a pickup message, and in the evening I picked up the package at my local pickup point, Extra Trondheimsveien. I had to pay NOK 275.- in VAT and NOK 149.- in customs fee. So add NOK 424.- to the total price. More tracking info:

13 June 20:31 The shipment has been delivered.
13 June 09:45 - 0506 OSLO   The shipment has arrived at Extra Trondheimsveien.
12 June 12:51 - 0024 OSLO   The shipment has been sorted and forwarded.
12 June 12:29 - 0024 OSLO   The shipment has cleared customs and sent to the recipient.

2023-06-09: the tracking information from the Nrwegian Postal service is interesting:

9 June 08:09 - 1470 LØRENSKOG   The shipment being processed for import.
9 June 07:12 - 1470 LØRENSKOG   The shipment has been sorted and forwarded.
7 June 23:05 - 1470 LØRENSKOG   The shipment has been sorted and forwarded.
7 June 17:27 - 1470 LØRENSKOG   The shipment has been sorted and forwarded.
5 June 11:40 - 1470 LØRENSKOG   The shipment has been sorted and forwarded.
5 June 10:56 - OSLO LETTER CENTER   The shipment has arrived in destination country.
31 May 03:31    The shipment has been sent from origin country.
30 May 12:30    The shipment has been collected.

either they have shipped the package back and forth for four days, or they have done nothing but repeating the same tracking info for four days.

2023-06-03: I need a box for the machine. Buy a Phanteks Enthoo Evolv mATX TG, or make my own?

2023-06-03: I created this page.

2023-05-30: the order was shipped.

2023-05-28: I ordered a Neotron Pico v1.1 Full Kit from theJPster on Tindie. Price was USD 99.- shipping USD 14.- in total USD 113.- which is NOK 1306.75 at current rates.