diff --git a/docs/src/code/LinuxCNC-block-diagram-small.svg b/docs/src/code/LinuxCNC-block-diagram-small.svg new file mode 100644 index 00000000000..ce093358da1 --- /dev/null +++ b/docs/src/code/LinuxCNC-block-diagram-small.svg @@ -0,0 +1,146 @@ + + + + + + + + GUI · halui · linuxcncrsh + axis · gmoccapy · qtvcp · touchy · gscreen + + + + emcCommand + 8192 B · queue + emcStatus + 20480 B + emcError + 8192 B · queue + NML + the only triplet · owned by linuxcncsvr + + + + milltask + + RS-274 + interpreter · rs274ngc + + interp_list + std::deque + throttled at 1000 + + sequencing + emctaskmain.cc + + iocontrol.0.* + 14 HAL pins + former io process + tool, coolant, estop — no NML channel left for I/O + + + + RTAPI shmem · key 100 · emcmot segment + + emcmot_command_t + SINGLE SLOT + mutex + commandNum + + emcmot_status_t + seqlock head / tail + + config, internal + + emcmot_error_t + MPSC RING 32 × 1024 + the only real queue here + not NML, + not a FIFO: + one exchange at a time + + + ordinary scheduling + SCHED_FIFO — rtapi_app, user space + a scheduling boundary, no longer a kernel boundary — except under RTAI + + + motmod + loaded modules + + tpmod + trajectory planner + cruckig · finite jerk + + homemod + homing + + *kins + forward and inverse + kinematics · 19 modules + + TC_QUEUE + ring · 2000 segments + ≈ 1 MB + + spindle × 8 + spindle.N.on · speed-out + at-speed · index-enable + + limit and home + status + + JOINT 1 … 16 — a motor, not an axis · 9 separate Cartesian axes + + cubic interpolator + + backlash + screw comp + output: motor_pos_cmd on a HAL pin — the controller stops there + + WHAT THE DIAGRAM GOT RIGHT + cubic interpolator · forward and inverse kinematics · limit/home status + RS-274 interpreter · sequencing logic · NML triplet to the GUI + encoder and motor closing the loop · the principle of a real-time boundary + + + HAL + 2 MiB shared block · key 0x48414C32 · components ▸ pins ▸ signals ▸ functions ▸ threads + absent from the original — yet it now carries every bit of hardware coupling + + + HAL COMPONENTS — wired by the integrator, moved out of the controller + pid + stepgen + pwmgen + encoder + estop_latch + limit3 + 124 .comp + 25 .c source files + + + DRIVERS AND HARDWARE + hostmot2 · Mesa + hal_parport + gpio · rpi, beaglebone + + motor · encoder · limit switches · spindle — 23 driver files + hostmot2 (42 modules, one driver) + + \ No newline at end of file diff --git a/docs/src/code/code-notes.adoc b/docs/src/code/code-notes.adoc index c0f777a390f..98a8e87e22f 100644 --- a/docs/src/code/code-notes.adoc +++ b/docs/src/code/code-notes.adoc @@ -100,7 +100,7 @@ document, both from the design point of view and from the developers point of view (where to find needed data, how to easily extend/modify things, etc.). -image::LinuxCNC-block-diagram-small.png[align="center",pdfwidth=100%] +image::LinuxCNC-block-diagram-small.svg[align="center",pdfwidth=100%] === LinuxCNC software architecture