1

I need a serial protocol for an embedded system that has some quirks. Right now it does YModem, but there are hiccups, so I thought I would try Zmodem or Kermit. Zmodem has both code and a clear enough implementation spec.

I can find nothing from which I can implement the file transfer protocol of Kermit from "scratch" (nor usable code).

There's source that isn't well organized and includes full terminal emulators and TCP clients, with all kinds of sections and options for every computer including antiques. E.g. C-Kermit 9.0. I'd spend more time refactoring it to extract just what I need than implementing it outright.

There is an abstruse mathematical paper that I find confusing since it doesn't talk about bits and bytes only something between a formal proof and pseudocode. (Proof.pdf - and it has theorems, proofs, and lemmas!). It claims to be some kind of specification. Maybe buried in there somewhere, but the same problem, I'd have to spend a while extracting the actual coding information.

I need some of the advanced features (full sliding windows), but the Embedded Kermit says it doesn't have those (though has some partial bits or hooks) but does have some other stuff I neither want nor need.

I don't think I would have any trouble writing Kermit from a real specification targeted to programmers as to what goes over the wire (content and timing), or better yet, a clean but full implementation.

I can't find either. Does anyone here know of one?

  • Question here is: how embedded is embedded? Any linux based router/phone/watch/solar panel control unit is embedded, but surely wouldn't mind the few kB of RAM C-Kermit uses. How much RAM can you spare? Does your platform have what you'd consider to be an OS? any MMU? – Marcus Müller Mar 20 '15 at 17:19
  • It is too small to run Linux. I have 32K of ram total leftover. It runs around 100MHz. And not much flash left. It does NOT have memory management. Think of one of those ARM chips on a Teensy or Arduino Zero, not a Raspi or Beagleboard. C-Kermit is a bunch of junk in addition to the protocol and requires major hacking to just get it to be a plain file transfer core. All the files are named ckxxjunk.c and aren't easily separated. It isn't designed to be reduced to something smaller. –  Mar 21 '15 at 19:38
  • Cortex something, I presume. But with 32kB of RAM, you won't be doing much sliding windows, will you? – Marcus Müller Mar 21 '15 at 20:23
  • I think the Kermit spec maxes out at 8kB which I have room for. I don't remember if it is Cortex, but I think it is. I might stretch for 16k since this can be constrained to when it isn't executing the main app. –  Mar 22 '15 at 03:53
  • See the book "Kermit - A File Transfer Protocol", by Frank da Cruz, 1987, ISBN 0-932376-88-6, chapter 9: "Protocol Specification". – MZaragoza May 04 '15 at 01:11

1 Answers1

0

The kermit protocol was documented in the book Kermit, a File Transfer Protocol by Frank Da Cruz (Digital Press, 1987). There's an online document called Kermit Protocol Manual (1986), which I assume is an earlier version of the book.

Some of the optional features in the manual have never been implemented, and there are also some optional features that have been implemented but never found their way into the manual. If you're interested in these exotic extensions, you will need to browse through this archive of Kermit protocol discussions.

jch
  • 5,382
  • 22
  • 41