From 0641bdb4a55e89acb3dcfb7785df57304d82f155 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sat, 16 Jun 2018 19:03:23 +0200 Subject: add etrax-tools --- package/etrax-tools/Makefile | 30 + package/etrax-tools/src/boot_linux | 511 + package/etrax-tools/src/e100boot/LICENSE | 26 + package/etrax-tools/src/e100boot/Makefile | 70 + package/etrax-tools/src/e100boot/cbl/Makefile | 25 + package/etrax-tools/src/e100boot/cbl/free_size | 42 + package/etrax-tools/src/e100boot/cbl/net/Makefile | 6 + package/etrax-tools/src/e100boot/cbl/net/common.d | 3 + .../etrax-tools/src/e100boot/cbl/net/common_init.d | 3 + package/etrax-tools/src/e100boot/cbl/net/crt0.d | 1 + .../src/e100boot/cbl/net/e100boot_version.c | 1 + .../src/e100boot/cbl/net/e100boot_version.d | 1 + package/etrax-tools/src/e100boot/cbl/net/flash.d | 1 + package/etrax-tools/src/e100boot/cbl/net/hwregs.d | 2 + .../etrax-tools/src/e100boot/cbl/net/net_init.d | 2 + .../src/e100boot/cbl/net_noleds/Makefile | 6 + .../src/e100boot/cbl/net_noleds/common.d | 3 + .../src/e100boot/cbl/net_noleds/common_init.d | 3 + .../etrax-tools/src/e100boot/cbl/net_noleds/crt0.d | 1 + .../src/e100boot/cbl/net_noleds/e100boot_version.c | 1 + .../src/e100boot/cbl/net_noleds/e100boot_version.d | 1 + .../src/e100boot/cbl/net_noleds/flash.d | 1 + .../src/e100boot/cbl/net_noleds/hwregs.d | 2 + .../src/e100boot/cbl/net_noleds/net_init.d | 2 + package/etrax-tools/src/e100boot/cbl/rules.cbl | 55 + package/etrax-tools/src/e100boot/cbl/ser.ima | Bin 0 -> 6546 bytes package/etrax-tools/src/e100boot/cbl/ser/Makefile | 6 + package/etrax-tools/src/e100boot/cbl/ser/common.d | 3 + .../etrax-tools/src/e100boot/cbl/ser/common_init.d | 3 + package/etrax-tools/src/e100boot/cbl/ser/crt0.d | 1 + .../src/e100boot/cbl/ser/e100boot_version.c | 1 + .../src/e100boot/cbl/ser/e100boot_version.d | 1 + package/etrax-tools/src/e100boot/cbl/ser/flash.d | 1 + package/etrax-tools/src/e100boot/cbl/ser/hwregs.d | 2 + package/etrax-tools/src/e100boot/cbl/ser/ser.out | Bin 0 -> 9257 bytes .../etrax-tools/src/e100boot/cbl/ser/ser_init.d | 3 + .../src/e100boot/cbl/ser_noleds/Makefile | 6 + .../src/e100boot/cbl/ser_noleds/common.d | 3 + .../src/e100boot/cbl/ser_noleds/common_init.d | 3 + .../etrax-tools/src/e100boot/cbl/ser_noleds/crt0.d | 1 + .../src/e100boot/cbl/ser_noleds/e100boot_version.c | 1 + .../src/e100boot/cbl/ser_noleds/e100boot_version.d | 1 + .../src/e100boot/cbl/ser_noleds/flash.d | 1 + .../src/e100boot/cbl/ser_noleds/hwregs.d | 2 + .../src/e100boot/cbl/ser_noleds/ser_init.d | 3 + package/etrax-tools/src/e100boot/cbl/src/common.c | 486 + .../etrax-tools/src/e100boot/cbl/src/common_init.c | 209 + .../etrax-tools/src/e100boot/cbl/src/compiler.h | 10 + package/etrax-tools/src/e100boot/cbl/src/crt0.S | 17 + package/etrax-tools/src/e100boot/cbl/src/debug.h | 0 .../etrax-tools/src/e100boot/cbl/src/e100boot.h | 332 + package/etrax-tools/src/e100boot/cbl/src/flash.c | 1125 + package/etrax-tools/src/e100boot/cbl/src/hwregs.c | 1713 + package/etrax-tools/src/e100boot/cbl/src/hwregs.h | 44822 +++++++++++++++++++ .../etrax-tools/src/e100boot/cbl/src/hwregs_def.h | 5435 +++ .../etrax-tools/src/e100boot/cbl/src/hwregs_int.h | 25386 +++++++++++ package/etrax-tools/src/e100boot/cbl/src/ldscript | 38 + .../etrax-tools/src/e100boot/cbl/src/net_init.c | 218 + package/etrax-tools/src/e100boot/cbl/src/project.h | 10 + .../etrax-tools/src/e100boot/cbl/src/ser_init.c | 117 + .../etrax-tools/src/e100boot/cbl/src/sv_addr.agh | 7323 +++ .../etrax-tools/src/e100boot/cbl/src/sv_addr_ag.h | 137 + package/etrax-tools/src/e100boot/doc/Makefile | 17 + package/etrax-tools/src/e100boot/doc/e100boot.1 | 401 + package/etrax-tools/src/e100boot/doc/e100boot.html | 395 + package/etrax-tools/src/e100boot/doc/e100boot.pod | 314 + package/etrax-tools/src/e100boot/doc/pod2htmd.tmp | 2 + package/etrax-tools/src/e100boot/doc/pod2htmi.tmp | 2 + .../etrax-tools/src/e100boot/libpcap-0.4/CHANGES | 267 + package/etrax-tools/src/e100boot/libpcap-0.4/FILES | 50 + .../etrax-tools/src/e100boot/libpcap-0.4/INSTALL | 328 + .../etrax-tools/src/e100boot/libpcap-0.4/Makefile | 173 + .../src/e100boot/libpcap-0.4/Makefile.conf | 2 + .../src/e100boot/libpcap-0.4/Makefile.in | 173 + .../etrax-tools/src/e100boot/libpcap-0.4/README | 49 + .../src/e100boot/libpcap-0.4/SUNOS4/nit_if.o.sparc | Bin 0 -> 5212 bytes .../src/e100boot/libpcap-0.4/SUNOS4/nit_if.o.sun3 | Bin 0 -> 4267 bytes .../libpcap-0.4/SUNOS4/nit_if.o.sun4c.4.0.3c | Bin 0 -> 5368 bytes .../etrax-tools/src/e100boot/libpcap-0.4/VERSION | 1 + .../src/e100boot/libpcap-0.4/aclocal.m4 | 706 + .../src/e100boot/libpcap-0.4/bpf/net/bpf.h | 264 + .../src/e100boot/libpcap-0.4/bpf/net/bpf_filter.c | 532 + .../src/e100boot/libpcap-0.4/bpf_filter.c | 1 + .../src/e100boot/libpcap-0.4/bpf_image.c | 288 + .../src/e100boot/libpcap-0.4/config.cache | 35 + .../src/e100boot/libpcap-0.4/config.guess | 693 + .../src/e100boot/libpcap-0.4/config.log | 61 + .../src/e100boot/libpcap-0.4/config.status | 179 + .../src/e100boot/libpcap-0.4/config.sub | 927 + .../etrax-tools/src/e100boot/libpcap-0.4/configure | 2137 + .../src/e100boot/libpcap-0.4/configure.in | 189 + .../src/e100boot/libpcap-0.4/etherent.c | 159 + .../src/e100boot/libpcap-0.4/ethertype.h | 76 + .../etrax-tools/src/e100boot/libpcap-0.4/gencode.c | 1944 + .../etrax-tools/src/e100boot/libpcap-0.4/gencode.h | 179 + .../etrax-tools/src/e100boot/libpcap-0.4/gnuc.h | 1 + .../etrax-tools/src/e100boot/libpcap-0.4/grammar.c | 2380 + .../etrax-tools/src/e100boot/libpcap-0.4/grammar.y | 281 + .../etrax-tools/src/e100boot/libpcap-0.4/inet.c | 219 + .../src/e100boot/libpcap-0.4/install-sh | 250 + .../src/e100boot/libpcap-0.4/lbl/gnuc.h | 43 + .../src/e100boot/libpcap-0.4/lbl/os-solaris2.h | 54 + .../src/e100boot/libpcap-0.4/lbl/os-sunos4.h | 215 + .../src/e100boot/libpcap-0.4/lbl/os-ultrix4.h | 39 + .../libpcap-0.4/linux-include/netinet/if_ether.h | 88 + .../libpcap-0.4/linux-include/netinet/ip_var.h | 178 + package/etrax-tools/src/e100boot/libpcap-0.4/mkdep | 109 + .../src/e100boot/libpcap-0.4/nametoaddr.c | 372 + package/etrax-tools/src/e100boot/libpcap-0.4/net | 1 + .../src/e100boot/libpcap-0.4/optimize.c | 2004 + .../src/e100boot/libpcap-0.4/pcap-bpf.c | 263 + .../src/e100boot/libpcap-0.4/pcap-dlpi.c | 848 + .../src/e100boot/libpcap-0.4/pcap-enet.c | 227 + .../src/e100boot/libpcap-0.4/pcap-int.h | 117 + .../src/e100boot/libpcap-0.4/pcap-linux.c | 352 + .../src/e100boot/libpcap-0.4/pcap-namedb.h | 76 + .../src/e100boot/libpcap-0.4/pcap-nit.c | 244 + .../src/e100boot/libpcap-0.4/pcap-nit.h | 19 + .../src/e100boot/libpcap-0.4/pcap-null.c | 73 + .../etrax-tools/src/e100boot/libpcap-0.4/pcap-pf.c | 351 + .../etrax-tools/src/e100boot/libpcap-0.4/pcap-pf.h | 19 + .../src/e100boot/libpcap-0.4/pcap-snit.c | 300 + .../src/e100boot/libpcap-0.4/pcap-snoop.c | 216 + .../etrax-tools/src/e100boot/libpcap-0.4/pcap.3 | 340 + .../etrax-tools/src/e100boot/libpcap-0.4/pcap.c | 206 + .../etrax-tools/src/e100boot/libpcap-0.4/pcap.h | 137 + package/etrax-tools/src/e100boot/libpcap-0.4/ppp.h | 50 + .../etrax-tools/src/e100boot/libpcap-0.4/rmlinks | 3 + .../src/e100boot/libpcap-0.4/savefile.c | 352 + .../etrax-tools/src/e100boot/libpcap-0.4/scanner.c | 2242 + .../etrax-tools/src/e100boot/libpcap-0.4/scanner.l | 203 + .../etrax-tools/src/e100boot/libpcap-0.4/tokdefs.h | 160 + .../etrax-tools/src/e100boot/libpcap-0.4/version.c | 1 + package/etrax-tools/src/e100boot/sbl/Makefile | 77 + package/etrax-tools/src/e100boot/sbl/Makefile.in | 76 + package/etrax-tools/src/e100boot/sbl/boot_images.c | 35 + package/etrax-tools/src/e100boot/sbl/boot_images.h | 20 + package/etrax-tools/src/e100boot/sbl/cconv | 158 + package/etrax-tools/src/e100boot/sbl/common.c | 1677 + package/etrax-tools/src/e100boot/sbl/common.h | 57 + package/etrax-tools/src/e100boot/sbl/conf.h | 139 + package/etrax-tools/src/e100boot/sbl/conf.h.in | 138 + package/etrax-tools/src/e100boot/sbl/config.cache | 48 + package/etrax-tools/src/e100boot/sbl/config.log | 90 + package/etrax-tools/src/e100boot/sbl/config.status | 330 + package/etrax-tools/src/e100boot/sbl/configure | 1405 + package/etrax-tools/src/e100boot/sbl/configure.in | 19 + .../etrax-tools/src/e100boot/sbl/create_regs.pl | 14 + package/etrax-tools/src/e100boot/sbl/net_ima.c | 891 + .../etrax-tools/src/e100boot/sbl/net_noleds_ima.c | 873 + package/etrax-tools/src/e100boot/sbl/network.c | 706 + package/etrax-tools/src/e100boot/sbl/network.h | 42 + package/etrax-tools/src/e100boot/sbl/reg_des.h | 141 + package/etrax-tools/src/e100boot/sbl/ser_ima.c | 825 + .../etrax-tools/src/e100boot/sbl/ser_noleds_ima.c | 807 + package/etrax-tools/src/e100boot/sbl/serial.c | 637 + package/etrax-tools/src/e100boot/sbl/serial.h | 26 + .../etrax-tools/src/e100boot/sbl/win32/Makefile | 8 + .../src/e100boot/sbl/win32/boot_images.c | 35 + .../etrax-tools/src/e100boot/sbl/win32/common.c | 1651 + .../etrax-tools/src/e100boot/sbl/win32/network.c | 681 + .../etrax-tools/src/e100boot/sendserial/Makefile | 3 + .../src/e100boot/sendserial/sendserial.c | 769 + package/etrax-tools/src/mkfimage.c | 72 + 164 files changed, 124246 insertions(+) create mode 100644 package/etrax-tools/Makefile create mode 100755 package/etrax-tools/src/boot_linux create mode 100644 package/etrax-tools/src/e100boot/LICENSE create mode 100644 package/etrax-tools/src/e100boot/Makefile create mode 100644 package/etrax-tools/src/e100boot/cbl/Makefile create mode 100755 package/etrax-tools/src/e100boot/cbl/free_size create mode 100644 package/etrax-tools/src/e100boot/cbl/net/Makefile create mode 100644 package/etrax-tools/src/e100boot/cbl/net/common.d create mode 100644 package/etrax-tools/src/e100boot/cbl/net/common_init.d create mode 100644 package/etrax-tools/src/e100boot/cbl/net/crt0.d create mode 100644 package/etrax-tools/src/e100boot/cbl/net/e100boot_version.c create mode 100644 package/etrax-tools/src/e100boot/cbl/net/e100boot_version.d create mode 100644 package/etrax-tools/src/e100boot/cbl/net/flash.d create mode 100644 package/etrax-tools/src/e100boot/cbl/net/hwregs.d create mode 100644 package/etrax-tools/src/e100boot/cbl/net/net_init.d create mode 100644 package/etrax-tools/src/e100boot/cbl/net_noleds/Makefile create mode 100644 package/etrax-tools/src/e100boot/cbl/net_noleds/common.d create mode 100644 package/etrax-tools/src/e100boot/cbl/net_noleds/common_init.d create mode 100644 package/etrax-tools/src/e100boot/cbl/net_noleds/crt0.d create mode 100644 package/etrax-tools/src/e100boot/cbl/net_noleds/e100boot_version.c create mode 100644 package/etrax-tools/src/e100boot/cbl/net_noleds/e100boot_version.d create mode 100644 package/etrax-tools/src/e100boot/cbl/net_noleds/flash.d create mode 100644 package/etrax-tools/src/e100boot/cbl/net_noleds/hwregs.d create mode 100644 package/etrax-tools/src/e100boot/cbl/net_noleds/net_init.d create mode 100644 package/etrax-tools/src/e100boot/cbl/rules.cbl create mode 100755 package/etrax-tools/src/e100boot/cbl/ser.ima create mode 100644 package/etrax-tools/src/e100boot/cbl/ser/Makefile create mode 100644 package/etrax-tools/src/e100boot/cbl/ser/common.d create mode 100644 package/etrax-tools/src/e100boot/cbl/ser/common_init.d create mode 100644 package/etrax-tools/src/e100boot/cbl/ser/crt0.d create mode 100644 package/etrax-tools/src/e100boot/cbl/ser/e100boot_version.c create mode 100644 package/etrax-tools/src/e100boot/cbl/ser/e100boot_version.d create mode 100644 package/etrax-tools/src/e100boot/cbl/ser/flash.d create mode 100644 package/etrax-tools/src/e100boot/cbl/ser/hwregs.d create mode 100755 package/etrax-tools/src/e100boot/cbl/ser/ser.out create mode 100644 package/etrax-tools/src/e100boot/cbl/ser/ser_init.d create mode 100644 package/etrax-tools/src/e100boot/cbl/ser_noleds/Makefile create mode 100644 package/etrax-tools/src/e100boot/cbl/ser_noleds/common.d create mode 100644 package/etrax-tools/src/e100boot/cbl/ser_noleds/common_init.d create mode 100644 package/etrax-tools/src/e100boot/cbl/ser_noleds/crt0.d create mode 100644 package/etrax-tools/src/e100boot/cbl/ser_noleds/e100boot_version.c create mode 100644 package/etrax-tools/src/e100boot/cbl/ser_noleds/e100boot_version.d create mode 100644 package/etrax-tools/src/e100boot/cbl/ser_noleds/flash.d create mode 100644 package/etrax-tools/src/e100boot/cbl/ser_noleds/hwregs.d create mode 100644 package/etrax-tools/src/e100boot/cbl/ser_noleds/ser_init.d create mode 100644 package/etrax-tools/src/e100boot/cbl/src/common.c create mode 100644 package/etrax-tools/src/e100boot/cbl/src/common_init.c create mode 100644 package/etrax-tools/src/e100boot/cbl/src/compiler.h create mode 100644 package/etrax-tools/src/e100boot/cbl/src/crt0.S create mode 100644 package/etrax-tools/src/e100boot/cbl/src/debug.h create mode 100644 package/etrax-tools/src/e100boot/cbl/src/e100boot.h create mode 100644 package/etrax-tools/src/e100boot/cbl/src/flash.c create mode 100644 package/etrax-tools/src/e100boot/cbl/src/hwregs.c create mode 100644 package/etrax-tools/src/e100boot/cbl/src/hwregs.h create mode 100644 package/etrax-tools/src/e100boot/cbl/src/hwregs_def.h create mode 100644 package/etrax-tools/src/e100boot/cbl/src/hwregs_int.h create mode 100644 package/etrax-tools/src/e100boot/cbl/src/ldscript create mode 100644 package/etrax-tools/src/e100boot/cbl/src/net_init.c create mode 100644 package/etrax-tools/src/e100boot/cbl/src/project.h create mode 100644 package/etrax-tools/src/e100boot/cbl/src/ser_init.c create mode 100644 package/etrax-tools/src/e100boot/cbl/src/sv_addr.agh create mode 100644 package/etrax-tools/src/e100boot/cbl/src/sv_addr_ag.h create mode 100644 package/etrax-tools/src/e100boot/doc/Makefile create mode 100644 package/etrax-tools/src/e100boot/doc/e100boot.1 create mode 100644 package/etrax-tools/src/e100boot/doc/e100boot.html create mode 100644 package/etrax-tools/src/e100boot/doc/e100boot.pod create mode 100644 package/etrax-tools/src/e100boot/doc/pod2htmd.tmp create mode 100644 package/etrax-tools/src/e100boot/doc/pod2htmi.tmp create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/CHANGES create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/FILES create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/INSTALL create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/Makefile create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/Makefile.conf create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/Makefile.in create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/README create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/SUNOS4/nit_if.o.sparc create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/SUNOS4/nit_if.o.sun3 create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/SUNOS4/nit_if.o.sun4c.4.0.3c create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/VERSION create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/aclocal.m4 create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/bpf/net/bpf.h create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/bpf/net/bpf_filter.c create mode 120000 package/etrax-tools/src/e100boot/libpcap-0.4/bpf_filter.c create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/bpf_image.c create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/config.cache create mode 100755 package/etrax-tools/src/e100boot/libpcap-0.4/config.guess create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/config.log create mode 100755 package/etrax-tools/src/e100boot/libpcap-0.4/config.status create mode 100755 package/etrax-tools/src/e100boot/libpcap-0.4/config.sub create mode 100755 package/etrax-tools/src/e100boot/libpcap-0.4/configure create mode 100755 package/etrax-tools/src/e100boot/libpcap-0.4/configure.in create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/etherent.c create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/ethertype.h create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/gencode.c create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/gencode.h create mode 120000 package/etrax-tools/src/e100boot/libpcap-0.4/gnuc.h create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/grammar.c create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/grammar.y create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/inet.c create mode 100755 package/etrax-tools/src/e100boot/libpcap-0.4/install-sh create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/lbl/gnuc.h create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/lbl/os-solaris2.h create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/lbl/os-sunos4.h create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/lbl/os-ultrix4.h create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/linux-include/netinet/if_ether.h create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/linux-include/netinet/ip_var.h create mode 100755 package/etrax-tools/src/e100boot/libpcap-0.4/mkdep create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/nametoaddr.c create mode 120000 package/etrax-tools/src/e100boot/libpcap-0.4/net create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/optimize.c create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/pcap-bpf.c create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/pcap-dlpi.c create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/pcap-enet.c create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/pcap-int.h create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/pcap-linux.c create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/pcap-namedb.h create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/pcap-nit.c create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/pcap-nit.h create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/pcap-null.c create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/pcap-pf.c create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/pcap-pf.h create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/pcap-snit.c create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/pcap-snoop.c create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/pcap.3 create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/pcap.c create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/pcap.h create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/ppp.h create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/rmlinks create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/savefile.c create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/scanner.c create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/scanner.l create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/tokdefs.h create mode 100644 package/etrax-tools/src/e100boot/libpcap-0.4/version.c create mode 100644 package/etrax-tools/src/e100boot/sbl/Makefile create mode 100644 package/etrax-tools/src/e100boot/sbl/Makefile.in create mode 100644 package/etrax-tools/src/e100boot/sbl/boot_images.c create mode 100644 package/etrax-tools/src/e100boot/sbl/boot_images.h create mode 100755 package/etrax-tools/src/e100boot/sbl/cconv create mode 100644 package/etrax-tools/src/e100boot/sbl/common.c create mode 100644 package/etrax-tools/src/e100boot/sbl/common.h create mode 100644 package/etrax-tools/src/e100boot/sbl/conf.h create mode 100644 package/etrax-tools/src/e100boot/sbl/conf.h.in create mode 100644 package/etrax-tools/src/e100boot/sbl/config.cache create mode 100644 package/etrax-tools/src/e100boot/sbl/config.log create mode 100755 package/etrax-tools/src/e100boot/sbl/config.status create mode 100755 package/etrax-tools/src/e100boot/sbl/configure create mode 100644 package/etrax-tools/src/e100boot/sbl/configure.in create mode 100755 package/etrax-tools/src/e100boot/sbl/create_regs.pl create mode 100644 package/etrax-tools/src/e100boot/sbl/net_ima.c create mode 100644 package/etrax-tools/src/e100boot/sbl/net_noleds_ima.c create mode 100644 package/etrax-tools/src/e100boot/sbl/network.c create mode 100644 package/etrax-tools/src/e100boot/sbl/network.h create mode 100644 package/etrax-tools/src/e100boot/sbl/reg_des.h create mode 100644 package/etrax-tools/src/e100boot/sbl/ser_ima.c create mode 100644 package/etrax-tools/src/e100boot/sbl/ser_noleds_ima.c create mode 100644 package/etrax-tools/src/e100boot/sbl/serial.c create mode 100644 package/etrax-tools/src/e100boot/sbl/serial.h create mode 100644 package/etrax-tools/src/e100boot/sbl/win32/Makefile create mode 100755 package/etrax-tools/src/e100boot/sbl/win32/boot_images.c create mode 100644 package/etrax-tools/src/e100boot/sbl/win32/common.c create mode 100755 package/etrax-tools/src/e100boot/sbl/win32/network.c create mode 100644 package/etrax-tools/src/e100boot/sendserial/Makefile create mode 100644 package/etrax-tools/src/e100boot/sendserial/sendserial.c create mode 100644 package/etrax-tools/src/mkfimage.c (limited to 'package/etrax-tools') diff --git a/package/etrax-tools/Makefile b/package/etrax-tools/Makefile new file mode 100644 index 000000000..9e4b51227 --- /dev/null +++ b/package/etrax-tools/Makefile @@ -0,0 +1,30 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:= etrax-tools +PKG_VERSION:= 1.0 +PKG_RELEASE:= 1 +PKG_DESCR:= flash tools for cris etrax boards +PKG_SECTION:= base/tools + +NO_DISTFILES:= 1 + +PKG_CFLINE_ETRAX_TOOLS:=depends on ADK_HOST_ONLY + +include $(ADK_TOPDIR)/mk/host.mk +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call HOST_template,ETRAX_TOOLS,etrax-tools,$(PKG_VERSION)-${PKG_RELEASE})) + +HOST_STYLE:= manual + +host-build: + (cd ${WRKBUILD}/e100boot && env ${HOST_MAKE_ENV} ${MAKE} -f ${MAKE_FILE} \ + ${HOST_MAKE_FLAGS} ${HOST_ALL_TARGET}) $(MAKE_TRACE) + +cmake-hostinstall: + +include ${ADK_TOPDIR}/mk/host-bottom.mk +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/etrax-tools/src/boot_linux b/package/etrax-tools/src/boot_linux new file mode 100755 index 000000000..f7da261e2 --- /dev/null +++ b/package/etrax-tools/src/boot_linux @@ -0,0 +1,511 @@ +#!/usr/bin/perl -w + +#***************************************************************************** +#! +#! FILE NAME : boot_linux +#! +#! PARAMETERS : -b the name of the boot image to use +#! -d the interface to use, e.g., eth1 +#! (defaults is eth0) +#! -f save it in flash memory at address 0x10000 +#! -F save it in flash memory at address 0 +#! -h show some help +#! -i name of the image to use (default is fimage) +#! -o the offset in the flash where the flashing +#! starts +#! -O the offset in the image file where the +#! flashing starts from +#! -p print the resulting etrax100boot command +#! instead of executing it +#! -s how much to flash (default is the size of +#! the flash minus the offset specified using +#! -o or -f) +#! -S the size of the flash +#! +#! All sizes and offsets above can be specified as decimal +#! numbers, or as hexadecimal numbers by prefixing them with 0x. +#! It is also possible to use the suffixes k and M to specify +#! kilo (1024) or mega (1048576). +#! +#! DESCRIPTION: Extract the start of the image and any registers that should +#! be set from the kimage or fimage file, and then boot it. +#! +#! FUNCTIONS : convert_size +#! extract_hw_settings +#! get_dword +#! calculate_sdram_init +#! sdram_command +#! print_help +#! +#!---------------------------------------------------------------------------- +#! HISTORY +#! +#! $Log: boot_linux,v $ +#! Revision 1.16 2004/11/01 16:32:27 starvik +#! Corrected help text to avoid confusion +#! +#! Revision 1.15 2003/01/29 11:48:57 pkj +#! Calculate a flash size large enough for the given image if the +#! -S option is not specified. +#! +#! Revision 1.14 2002/11/18 14:40:09 pkj +#! Make use of the --loop option to etrax100boot when initialising +#! SDRAM memories. This requires a lot fewer options to be passed +#! to the boot loader. +#! +#! Revision 1.13 2002/08/15 16:29:02 pkj +#! * The -S option now accepts the size in bytes (just like the -s option). +#! For backwards compatibility it still assumes sizes of 16 and less to +#! be specified in MB. +#! * The suffixes k and M can now be used with all sizes and offsets to +#! specify them in kilo or mega. +#! +#! Revision 1.12 2002/08/15 15:27:34 pkj +#! Use $opts{'x'} instead of $opt_x. +#! +#! Revision 1.11 2002/07/04 17:06:39 pkj +#! * No longer specifies a bootfile by default (not needed any longer). +#! * Implemented option -b to specify a bootfile. +#! * Removed references to option -l (it was never implemented). +#! +#! Revision 1.10 2002/06/04 11:50:23 starvik +#! Check if mrs_data is specified in kernelconfig (necessary for MCM) +#! +#! Revision 1.9 2002/01/29 10:38:26 pkj +#! Change illegal to invalid. +#! +#! Revision 1.8 2001/09/13 12:32:10 pkj +#! * Added option -S to specify the size of the flash (in MB), as -s +#! is used to specify how much to flash nowadays. +#! * Made the default size of the flash depend on the size of the image +#! file. If it is bigger than 0x200100 then the flash is assumed to +#! be 4 MB, otherwise it is assumed to be 2 MB. +#! * Added verification of various options. +#! +#! Revision 1.7 2001/09/13 10:25:11 pkj +#! Minor clean-up. +#! +#! Revision 1.6 2001/06/29 10:05:16 pkj +#! Corrected check for SDRAM. +#! +#! Revision 1.5 2001/06/29 09:11:55 pkj +#! Synchronised boot_elinux and boot_linux. +#! +#!---------------------------------------------------------------------------- +#! (C) Copyright 2001, Axis Communications AB, LUND, SWEDEN +#!**************************************************************************** + +#****************** INCLUDE FILES SECTION ************************************ + +use strict; + +use Getopt::Std; +use File::Basename; + +#****************** VARIABLE DECLARATION SECTION ***************************** + +use vars qw($my_name %opts); +use vars qw($text_start $cmd); +use vars qw($image_name $image_size); +use vars qw($offset $source_offset $flash_size $flashing_size); +use vars qw($sdram_timing_address $sdram_config_address); +use vars qw($sdram_precharge $sdram_nop $sdram_refresh $sdram_mrs); + +#****************** CONSTANT SECTION ***************************************** + +# Register addresses +$sdram_timing_address = "b0000008"; +$sdram_config_address = "b000000c"; + +# SDRAM commands +$sdram_precharge = 3; +$sdram_nop = 0; +$sdram_refresh = 2; +$sdram_mrs = 1; + +#****************** MAIN PROGRAM SECTION ************************************* + +# The name of this program. +$my_name = basename($0); + +# Get options +getopts('b:d:fFhi:o:O:ps:S:', \%opts); + +&print_help if ($opts{'h'}); + +# Name and existance of the image +$image_name = ($opts{'i'} ? $opts{'i'} : 'fimage'); +die "Could not find the image $image_name!\n" unless (-s $image_name); + +if ($opts{'f'} || $opts{'F'}) +{ + $image_size = -s $image_name; + + $offset = ($opts{'f'} ? 0x10000 : 0); + + $offset = &convert_size($opts{'o'}) if (defined($opts{'o'})); + + die("$my_name: Invalid destination offset\n") if ($offset !~ /^\d+$/); + + my $base_name = basename($image_name); + if ($base_name eq 'timage' || $base_name eq 'flash1.img') + { + $source_offset = 0; + } + else + { + $source_offset = $offset; + } + + $source_offset = &convert_size($opts{'O'}) if (defined($opts{'O'})); + + die("$my_name: Invalid source offset\n") if ($source_offset !~ /^\d+$/); + die("$my_name: Source offset > image size\n") if ($source_offset > $image_size); + + if (defined($opts{'S'})) + { + # Backwards compatibility to allow specifying the flash size in MB + # without using an M suffix + $opts{'S'} .= 'M' if ($opts{'S'} =~ /^\d+$/ && $opts{'S'} <= 16); + + $flash_size = &convert_size($opts{'S'}); + } + else + { + # Calculate a flash size large enough for the image without the checksum + # and HWID. + $flash_size = ($image_size - $source_offset + $offset) & 0xFFFF0000; + } + + die("$my_name: Invalid flash size\n") if ($flash_size !~ /^\d+$/); + die("$my_name: Destination offset > flash size\n") if ($offset > $flash_size); + if (defined($opts{'s'})) + { + $flashing_size = &convert_size($opts{'s'}); + } + else + { + $flashing_size = $flash_size - $offset; + } + + die("$my_name: Invalid size to flash\n") if ($flashing_size !~ /^\d+$/); + + if ($flashing_size > $flash_size - $offset) + { + $flashing_size = $flash_size - $offset; + printf("Warning: Flashing size limited to 0x%lx due to the offset (0x%lx) and flash size (0x%lx).\n", $flashing_size, $offset, $flash_size); + } + + if ($flashing_size > $image_size - $source_offset) + { + $flashing_size = $image_size - $source_offset; + printf("Warning: Flashing size limited to 0x%lx due to the offset (0x%lx) and image size (0x%lx).\n", $flashing_size, $source_offset, $image_size); + } +} + +# Create the command line to boot the image +if (system('./etrax100boot --help > /dev/null') == 0) +{ + $cmd = './etrax100boot'; +} +elsif (system('svinto_boot --help > /dev/null') == 0) +{ + $cmd = 'svinto_boot'; +} +else +{ + die("Cannot find e100boot program in your PATH!\n"); +} + +$cmd .= " --device $opts{'d'}" if ($opts{'d'}); + +$cmd .= &extract_hw_settings; + +$cmd .= " --bootfile $opts{'b'}" if ($opts{'b'}); +$cmd .= " --file $image_name $text_start"; + +if ($opts{'f'} || $opts{'F'}) +{ + $cmd .= sprintf(" --flash %lx %lx %lx --jump 0", + hex($text_start) + $source_offset, $offset, $flashing_size); +} +else +{ + $cmd .= " --jump $text_start"; +} + +if ($opts{'p'}) +{ + print "Command:\n$cmd\n"; +} +else +{ + system($cmd); +} + +exit 0; + +#****************** FUNCTION DEFINITION SECTION ****************************** + +#***************************************************************************** +## +## FUNCTION NAME: convert_size +## +##**************************************************************************** + +sub convert_size +{ + my($arg) = @_; + my $size; + + if ($arg =~ /^0x([\da-fA-F]+)([kM])?$/) + { + $size = hex($1); + } + elsif ($arg =~ /^(\d+)([kM])?$/) + { + $size = $1; + } + else + { + return -1; + } + + if (!defined($2)) + { + return $size; + } + elsif ($2 eq 'k') + { + return $size * 1024; + } + elsif ($2 eq 'M') + { + return $size * 1048576; + } +} + +#***************************************************************************** +## +## FUNCTION NAME: extract_hw_settings +## +##**************************************************************************** + +sub extract_hw_settings +{ + my $data; + my $dbg_port; + my $sdram_enabled; + my $return_value = ""; + my $sdram_config; + + # The hw information table has the following format + # + # "HW_PARAM_MAGIC" + # text_start (dword) + # serial debg port (dword) + # sdram enabled (dword) + # register address (dword) + # register value (dword) + # ... + # 0 + + open(FILE, "$image_name") || die("Could not open '$image_name'"); + + while () + { + if (m/HW_PARAM_MAGIC/g) + { + # Seek to first byte after magic + seek(FILE, -length($_) + pos($_), 1); + last; + } + } + + $text_start = &get_dword; + $dbg_port = &get_dword; + $sdram_enabled = int(&get_dword); + + while (1) + { + my $register = &get_dword; + my $value = &get_dword; + + last if ($register eq "00000000"); + + if ($sdram_enabled) + { + if ($register eq $sdram_config_address) + { + $sdram_config = $value; + } + elsif ($register eq $sdram_timing_address) + { + $return_value .= &calculate_sdram_init($value, $sdram_config); + next; + } + } + + $return_value .= " --setreg $register $value"; + } + + close(FILE); + + return $return_value; +} + +#***************************************************************************** +## +## FUNCTION NAME: get_dword +## +##**************************************************************************** + +sub get_dword +{ + my $data; + + read(FILE, $data, 4); + return unpack("H8", pack("V", unpack("N", $data))); +} + +#***************************************************************************** +## +## FUNCTION NAME: calculate_sdram_init +## +##**************************************************************************** + +sub calculate_sdram_init +{ + # Refer to ETRAX 100LX Designers Reference for a description of SDRAM + # initialization + my $sdram_init_val = hex($_[0]); + my $sdram_config_val = hex($_[1]); + my $bus_width = $sdram_config_val & 0x00800000; + my $speed; + my $cas_latency; + my $mrs_data; + my $temp; + my $return_value; + my $value; + + $mrs_data = ($sdram_init_val & 0x00ff0000) >> 16; + $sdram_init_val &= 0x8000ffff; # Make sure mrs data is 0 + $sdram_init_val |= 0x80000000; # Make sure sdram is enabled + $speed = $sdram_init_val & 0x1000; + $cas_latency = $sdram_init_val & 0x3; + if ($speed) # 100 MHz + { + $cas_latency += 2; + } + else # 50 MHz + { + $cas_latency += 1; + } + + # Calculate value of mrs_data + # CAS latency = 2 && bus_width = 32 => 0x40 + # CAS latency = 3 && bus_width = 32 => 0x60 + # CAS latency = 2 && bus_width = 16 => 0x20 + # CAS latency = 3 && bus_width = 16 => 0x30 + if ($mrs_data == 0) + { + if ($bus_width == 0) # 16 bits + { + $mrs_data = $cas_latency == 2 ? 0x20 : 0x30; + } + else # 32 bits + { + $mrs_data = $cas_latency == 2 ? 0x40 : 0x60; + } + } + + $temp = $sdram_init_val | 0x0000c000; # Disable refresh + $return_value .= &sdram_command($temp); + $return_value .= " --pause 20000"; + + $return_value .= &sdram_command($temp, $sdram_precharge); + $return_value .= &sdram_command($temp, $sdram_nop); + + $return_value .= " --setreg +0 7"; + $return_value .= " --label label1"; + $return_value .= &sdram_command($temp, $sdram_refresh); + $return_value .= &sdram_command($temp, $sdram_nop); + $return_value .= " --loop +0 label1"; + + $return_value .= &sdram_command($temp, $sdram_mrs, $mrs_data); + $return_value .= &sdram_command($temp, $sdram_nop); + + $return_value .= &sdram_command($sdram_init_val); + + return $return_value; +} + +#***************************************************************************** +## +## FUNCTION NAME: sdram_command +## +##**************************************************************************** + +sub sdram_command +{ + my($temp, $value, $mrs_data) = @_; + + $value ||= 0; + if ($value == $sdram_mrs) + { + $value = sprintf("%lx", $temp | ($value << 9) | ($mrs_data << 16)); + } + else + { + $value = sprintf("%lx", $temp | ($value << 9)); + } + + return " --setreg $sdram_timing_address $value"; +} + +#***************************************************************************** +## +## FUNCTION NAME: print_help +## +##**************************************************************************** + +sub print_help +{ + print "\nAXIS $my_name, ", '$Revision: 1.16 $ $Date: 2004/11/01 16:32:27 $ ', "\n"; + die < : The boot image to use. + -d : The network interface to use, default is eth0. + -f : Save the image in the flash memory starting at + address 0x10000. + -F : Save the image in the flash memory starting at + address 0. + -h : Print this help text. + -i : The path and name of the image to use, default + is fimage. + -o : The offset in the flash where the flashing starts. + -O : The offset in the image file where the flashing + starts from. + -p : Print the resulting etrax100boot command instead + of executing it. + -s : How much to flash (default is the size of the + flash minus the offset specified using -o or -f). + -S : The size of the flash. + + All sizes and offsets above can be specified as decimal numbers, or as + hexadecimal numbers by prefixing them with 0x. It is also possible to use + the suffixes k and M to specify kilo (1024) or mega (1048576). + +EOT +} + +#****************** END OF FILE boot_linux *********************************** diff --git a/package/etrax-tools/src/e100boot/LICENSE b/package/etrax-tools/src/e100boot/LICENSE new file mode 100644 index 000000000..afbcf2ec6 --- /dev/null +++ b/package/etrax-tools/src/e100boot/LICENSE @@ -0,0 +1,26 @@ +Copyright (c) 2004, 2005 Axis Communications AB. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of Axis Communications AB nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY AXIS COMMUNCATIONS AB ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. diff --git a/package/etrax-tools/src/e100boot/Makefile b/package/etrax-tools/src/e100boot/Makefile new file mode 100644 index 000000000..828b40221 --- /dev/null +++ b/package/etrax-tools/src/e100boot/Makefile @@ -0,0 +1,70 @@ +# +# Top Makefile for e100boot +# $Id: Makefile,v 1.20 2003/06/04 12:22:23 pkj Exp $ +# + +# Change these paths if necessary. Can also be specified on cmdline as +# 'make INSTALL_PATH=/foo/bar/'. + +INSTALL_NAME = e100boot +INSTALL_PATH = /usr/local +INSTALL_PATH_BIN = $(INSTALL_PATH)/bin +INSTALL_PATH_DOC = $(INSTALL_PATH)/man/man1 + +DIRS = libpcap-0.4 sbl doc + +-include $(AXIS_TOP_DIR)/tools/build/Rules.axis +ifdef prefix +INSTALL_PATH = $(prefix) +endif + +INSTALL ?= install + +all: conf $(DIRS) + @for d in $(DIRS); do \ + echo -e "\n### Making $$d"; \ + $(MAKE) -C $$d || exit; \ + done + +conf: $(DIRS) + @for d in $(DIRS); do \ + if [ -x $$d/configure ] && [ ! -e $$d/Makefile ]; then \ + echo -e "\n### Configuring $$d"; \ + cd $$d; ./configure || exit; cd ..; \ + fi; \ + done + +tar: clean + @echo -e "\n### Making tarball." + tar -C ../ -zcf e100boot.tgz --exclude e100boot.tgz --exclude RCS --exclude CVS e100boot + + +install: all + $(INSTALL) -d $(INSTALL_PATH_BIN) $(INSTALL_PATH_DOC) + $(INSTALL) sbl/e100boot.stripped $(INSTALL_PATH_BIN)/$(INSTALL_NAME) + $(INSTALL) -m 0644 doc/e100boot.1 $(INSTALL_PATH_DOC)/$(INSTALL_NAME).1 + +install.setuid: + @echo -e "\n### Make install.setuid"; \ + if ! [ -e $(INSTALL_PATH_BIN)/$(INSTALL_NAME) ]; then \ + echo -e "\n### Binary $(INSTALL_PATH_BIN)/$(INSTALL_NAME) does not exist! Make install first."; \ + elif [ `id -u` = 0 ]; then \ + chown root.root $(INSTALL_PATH_BIN)/$(INSTALL_NAME); \ + chmod +s $(INSTALL_PATH_BIN)/$(INSTALL_NAME); \ + else \ + echo "### You must do this as root!"; \ + fi + +clean: + @for d in $(DIRS); do \ + if [ -e $$d/Makefile ]; then \ + echo -e "\n### Cleaning $$d"; \ + $(MAKE) -C $$d clean || exit; \ + fi; \ + done + +configsubs: conf configsubs-dirs + +configsubs-dirs: + $(MAKE) -C libpcap-0.4 configsubs + $(MAKE) -C sbl configsubs diff --git a/package/etrax-tools/src/e100boot/cbl/Makefile b/package/etrax-tools/src/e100boot/cbl/Makefile new file mode 100644 index 000000000..af7ed075d --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/Makefile @@ -0,0 +1,25 @@ +# +# Makefile to generate .ima files for e100boot +# +# Hacked by ronny, rehacked by ronny +# +# $Id: Makefile,v 1.26 2003/03/13 14:18:31 cii Exp $ +# + +DIRS := net net_noleds ser ser_noleds + +all: $(DIRS) + @for d in $(DIRS); do \ + echo -e "\n### Making $$d"; \ + make -C $$d || exit; \ + done + @echo "***************************************************************" + @./free_size + @echo "***************************************************************" + +clean: + rm -f *.ima + @for d in $(DIRS); do \ + echo -e "\n### Cleaning $$d"; \ + make -C $$d clean || exit; \ + done; diff --git a/package/etrax-tools/src/e100boot/cbl/free_size b/package/etrax-tools/src/e100boot/cbl/free_size new file mode 100755 index 000000000..73e1365e4 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/free_size @@ -0,0 +1,42 @@ +#!/bin/sh +# +# Calculates the size left in ETRAX cache when bootloader is loaded. +# + +BOOT_FILE=`dirname $0`/net/net.out +HEADER_FILE=`dirname $0`/src/e100boot.h + +for FILE in $BOOT_FILE $HEADER_FILE; do + if [ ! -f $FILE ]; then + echo "Could not find the file \"$FILE\"!" + exit 1 + fi +done + +# The cache size is given in hex +CACHE_SIZE=2000 + +BSS_SIZE=`nm-cris $BOOT_FILE | grep Ebss | cut -d ' ' -f 1 | tr a-f A-F` + +TEXT_SIZE=`nm-cris $BOOT_FILE | grep Stext | cut -d ' ' -f 1 | tr a-f A-F` + +IO_BUF_END=`grep IO_BUF_END $HEADER_FILE | awk '{ print $3 }' | \ + cut -d x -f 2 | tr a-f A-F` + +IO_BUF_START=`grep IO_BUF_START $HEADER_FILE | awk '{ print $3 }' | \ + cut -d x -f 2 | tr a-f A-F` + +FREE_SIZE=`echo "ibase=16 ; \ + $CACHE_SIZE - \ + ($BSS_SIZE - $TEXT_SIZE + $IO_BUF_END - $IO_BUF_START)" | \ + bc` + +echo "Free cache size when cbl is loaded will be:" +echo -e "\t$FREE_SIZE bytes - size of stack" + +if [ $FREE_SIZE -lt 0 ]; then + echo "Bootloader is too large! You will have to do some optimizing..." + exit 1 +fi + +exit 0 diff --git a/package/etrax-tools/src/e100boot/cbl/net/Makefile b/package/etrax-tools/src/e100boot/cbl/net/Makefile new file mode 100644 index 000000000..a77cc5d6c --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/net/Makefile @@ -0,0 +1,6 @@ +# +# $Id: Makefile,v 1.1 2002/07/01 14:36:40 pkj Exp $ +# + +IMAGE := net.ima +include ../rules.cbl diff --git a/package/etrax-tools/src/e100boot/cbl/net/common.d b/package/etrax-tools/src/e100boot/cbl/net/common.d new file mode 100644 index 000000000..efe422d77 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/net/common.d @@ -0,0 +1,3 @@ +common.o: ../src/common.c ../src/hwregs.h ../src/compiler.h \ + ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h \ + ../src/e100boot.h diff --git a/package/etrax-tools/src/e100boot/cbl/net/common_init.d b/package/etrax-tools/src/e100boot/cbl/net/common_init.d new file mode 100644 index 000000000..3591272ad --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/net/common_init.d @@ -0,0 +1,3 @@ +common_init.o: ../src/common_init.c ../src/hwregs.h ../src/compiler.h \ + ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h \ + ../src/e100boot.h diff --git a/package/etrax-tools/src/e100boot/cbl/net/crt0.d b/package/etrax-tools/src/e100boot/cbl/net/crt0.d new file mode 100644 index 000000000..e33f99ad1 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/net/crt0.d @@ -0,0 +1 @@ +crt0.o: ../src/crt0.S diff --git a/package/etrax-tools/src/e100boot/cbl/net/e100boot_version.c b/package/etrax-tools/src/e100boot/cbl/net/e100boot_version.c new file mode 100644 index 000000000..7600f6d19 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/net/e100boot_version.c @@ -0,0 +1 @@ +char e100boot_version[] = "This bootloader was built by root on Wed May 16 21:31:41 CEST 2007.\r\n"; diff --git a/package/etrax-tools/src/e100boot/cbl/net/e100boot_version.d b/package/etrax-tools/src/e100boot/cbl/net/e100boot_version.d new file mode 100644 index 000000000..fd4569336 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/net/e100boot_version.d @@ -0,0 +1 @@ +e100boot_version.o: e100boot_version.c diff --git a/package/etrax-tools/src/e100boot/cbl/net/flash.d b/package/etrax-tools/src/e100boot/cbl/net/flash.d new file mode 100644 index 000000000..f11cf6824 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/net/flash.d @@ -0,0 +1 @@ +flash.o: ../src/flash.c ../src/e100boot.h ../src/compiler.h diff --git a/package/etrax-tools/src/e100boot/cbl/net/hwregs.d b/package/etrax-tools/src/e100boot/cbl/net/hwregs.d new file mode 100644 index 000000000..7158582d0 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/net/hwregs.d @@ -0,0 +1,2 @@ +hwregs.o: ../src/hwregs.c ../src/compiler.h ../src/hwregs.h \ + ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h diff --git a/package/etrax-tools/src/e100boot/cbl/net/net_init.d b/package/etrax-tools/src/e100boot/cbl/net/net_init.d new file mode 100644 index 000000000..c2b32bf28 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/net/net_init.d @@ -0,0 +1,2 @@ +net_init.o: ../src/net_init.c ../src/sv_addr_ag.h ../src/sv_addr.agh \ + ../src/e100boot.h ../src/compiler.h diff --git a/package/etrax-tools/src/e100boot/cbl/net_noleds/Makefile b/package/etrax-tools/src/e100boot/cbl/net_noleds/Makefile new file mode 100644 index 000000000..9479cbab8 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/net_noleds/Makefile @@ -0,0 +1,6 @@ +# +# $Id: Makefile,v 1.1 2002/07/01 14:36:51 pkj Exp $ +# + +IMAGE := net_noleds.ima +include ../rules.cbl diff --git a/package/etrax-tools/src/e100boot/cbl/net_noleds/common.d b/package/etrax-tools/src/e100boot/cbl/net_noleds/common.d new file mode 100644 index 000000000..efe422d77 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/net_noleds/common.d @@ -0,0 +1,3 @@ +common.o: ../src/common.c ../src/hwregs.h ../src/compiler.h \ + ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h \ + ../src/e100boot.h diff --git a/package/etrax-tools/src/e100boot/cbl/net_noleds/common_init.d b/package/etrax-tools/src/e100boot/cbl/net_noleds/common_init.d new file mode 100644 index 000000000..3591272ad --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/net_noleds/common_init.d @@ -0,0 +1,3 @@ +common_init.o: ../src/common_init.c ../src/hwregs.h ../src/compiler.h \ + ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h \ + ../src/e100boot.h diff --git a/package/etrax-tools/src/e100boot/cbl/net_noleds/crt0.d b/package/etrax-tools/src/e100boot/cbl/net_noleds/crt0.d new file mode 100644 index 000000000..e33f99ad1 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/net_noleds/crt0.d @@ -0,0 +1 @@ +crt0.o: ../src/crt0.S diff --git a/package/etrax-tools/src/e100boot/cbl/net_noleds/e100boot_version.c b/package/etrax-tools/src/e100boot/cbl/net_noleds/e100boot_version.c new file mode 100644 index 000000000..b503ab3b0 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/net_noleds/e100boot_version.c @@ -0,0 +1 @@ +char e100boot_version[] = "This bootloader was built by root on Wed May 16 21:31:43 CEST 2007.\r\n"; diff --git a/package/etrax-tools/src/e100boot/cbl/net_noleds/e100boot_version.d b/package/etrax-tools/src/e100boot/cbl/net_noleds/e100boot_version.d new file mode 100644 index 000000000..fd4569336 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/net_noleds/e100boot_version.d @@ -0,0 +1 @@ +e100boot_version.o: e100boot_version.c diff --git a/package/etrax-tools/src/e100boot/cbl/net_noleds/flash.d b/package/etrax-tools/src/e100boot/cbl/net_noleds/flash.d new file mode 100644 index 000000000..f11cf6824 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/net_noleds/flash.d @@ -0,0 +1 @@ +flash.o: ../src/flash.c ../src/e100boot.h ../src/compiler.h diff --git a/package/etrax-tools/src/e100boot/cbl/net_noleds/hwregs.d b/package/etrax-tools/src/e100boot/cbl/net_noleds/hwregs.d new file mode 100644 index 000000000..7158582d0 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/net_noleds/hwregs.d @@ -0,0 +1,2 @@ +hwregs.o: ../src/hwregs.c ../src/compiler.h ../src/hwregs.h \ + ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h diff --git a/package/etrax-tools/src/e100boot/cbl/net_noleds/net_init.d b/package/etrax-tools/src/e100boot/cbl/net_noleds/net_init.d new file mode 100644 index 000000000..c2b32bf28 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/net_noleds/net_init.d @@ -0,0 +1,2 @@ +net_init.o: ../src/net_init.c ../src/sv_addr_ag.h ../src/sv_addr.agh \ + ../src/e100boot.h ../src/compiler.h diff --git a/package/etrax-tools/src/e100boot/cbl/rules.cbl b/package/etrax-tools/src/e100boot/cbl/rules.cbl new file mode 100644 index 000000000..545909055 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/rules.cbl @@ -0,0 +1,55 @@ +# +# $Id: rules.cbl,v 1.4 2005/04/20 11:18:54 starvik Exp $ +# + +VPATH := .:../src + +ifeq ($(findstring _noleds,$(IMAGE)),_noleds) +USE_LEDS := 0 +else +USE_LEDS := 1 +endif + +MAKEFLAGS := r +INCS := -I. +DEFS := -DUSE_LEDS=$(USE_LEDS) +CFLAGS := -Os -Wall -Wmissing-prototypes -W -Wa,-N -nostdinc $(INCS) $(DEFS) -MMD +ASFLAGS := $(CFLAGS) +LNFLAGS := -Wl,--section-start,.startup=0x380000f0 -nostdlib -Os -Wl,-T../src/ldscript +CC := cris-axis-elf-gcc + +OUT := $(patsubst %.ima,%.out,$(IMAGE)) + +OBJS = crt0.o common_init.o +ifeq ($(findstring net,$(IMAGE)),net) +OBJS += net_init.o +else +OBJS += ser_init.o +endif +OBJS += common.o flash.o hwregs.o e100boot_version.o + +all: ../$(IMAGE) + +$(OUT): $(OBJS) ldscript + $(CC) -o $@ $(LNFLAGS) $(OBJS) + +../%.ima: %.out + bin-cris -o $@ $< + @find $@ -printf '# Size of image $@ is %s bytes.\n\n' + +$(OBJS): ../rules.cbl Makefile + +# We don't want this to be a dummy and be recreated every time we build, +# only after a make clean +e100boot_version.c: + @echo "Generating version file....." + @echo 'char e100boot_version[] = "This bootloader was built by '`id -u -n`' on '`date`'.\r\n";' > $@ + +dummy: + +clean: + rm -rf *.o *.d *.out *.ima deps e100boot_version.c + +ifneq ($(MAKECMDGOALS),clean) +-include *.d +endif diff --git a/package/etrax-tools/src/e100boot/cbl/ser.ima b/package/etrax-tools/src/e100boot/cbl/ser.ima new file mode 100755 index 000000000..388ccc381 Binary files /dev/null and b/package/etrax-tools/src/e100boot/cbl/ser.ima differ diff --git a/package/etrax-tools/src/e100boot/cbl/ser/Makefile b/package/etrax-tools/src/e100boot/cbl/ser/Makefile new file mode 100644 index 000000000..0905a5a5b --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/ser/Makefile @@ -0,0 +1,6 @@ +# +# $Id: Makefile,v 1.1 2002/07/01 14:37:01 pkj Exp $ +# + +IMAGE := ser.ima +include ../rules.cbl diff --git a/package/etrax-tools/src/e100boot/cbl/ser/common.d b/package/etrax-tools/src/e100boot/cbl/ser/common.d new file mode 100644 index 000000000..efe422d77 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/ser/common.d @@ -0,0 +1,3 @@ +common.o: ../src/common.c ../src/hwregs.h ../src/compiler.h \ + ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h \ + ../src/e100boot.h diff --git a/package/etrax-tools/src/e100boot/cbl/ser/common_init.d b/package/etrax-tools/src/e100boot/cbl/ser/common_init.d new file mode 100644 index 000000000..3591272ad --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/ser/common_init.d @@ -0,0 +1,3 @@ +common_init.o: ../src/common_init.c ../src/hwregs.h ../src/compiler.h \ + ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h \ + ../src/e100boot.h diff --git a/package/etrax-tools/src/e100boot/cbl/ser/crt0.d b/package/etrax-tools/src/e100boot/cbl/ser/crt0.d new file mode 100644 index 000000000..e33f99ad1 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/ser/crt0.d @@ -0,0 +1 @@ +crt0.o: ../src/crt0.S diff --git a/package/etrax-tools/src/e100boot/cbl/ser/e100boot_version.c b/package/etrax-tools/src/e100boot/cbl/ser/e100boot_version.c new file mode 100644 index 000000000..6ffd0de21 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/ser/e100boot_version.c @@ -0,0 +1 @@ +char e100boot_version[] = "This bootloader was built by root on Wed May 16 21:31:44 CEST 2007.\r\n"; diff --git a/package/etrax-tools/src/e100boot/cbl/ser/e100boot_version.d b/package/etrax-tools/src/e100boot/cbl/ser/e100boot_version.d new file mode 100644 index 000000000..fd4569336 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/ser/e100boot_version.d @@ -0,0 +1 @@ +e100boot_version.o: e100boot_version.c diff --git a/package/etrax-tools/src/e100boot/cbl/ser/flash.d b/package/etrax-tools/src/e100boot/cbl/ser/flash.d new file mode 100644 index 000000000..f11cf6824 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/ser/flash.d @@ -0,0 +1 @@ +flash.o: ../src/flash.c ../src/e100boot.h ../src/compiler.h diff --git a/package/etrax-tools/src/e100boot/cbl/ser/hwregs.d b/package/etrax-tools/src/e100boot/cbl/ser/hwregs.d new file mode 100644 index 000000000..7158582d0 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/ser/hwregs.d @@ -0,0 +1,2 @@ +hwregs.o: ../src/hwregs.c ../src/compiler.h ../src/hwregs.h \ + ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h diff --git a/package/etrax-tools/src/e100boot/cbl/ser/ser.out b/package/etrax-tools/src/e100boot/cbl/ser/ser.out new file mode 100755 index 000000000..5c6156b7e Binary files /dev/null and b/package/etrax-tools/src/e100boot/cbl/ser/ser.out differ diff --git a/package/etrax-tools/src/e100boot/cbl/ser/ser_init.d b/package/etrax-tools/src/e100boot/cbl/ser/ser_init.d new file mode 100644 index 000000000..89a6d90de --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/ser/ser_init.d @@ -0,0 +1,3 @@ +ser_init.o: ../src/ser_init.c ../src/hwregs.h ../src/compiler.h \ + ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h \ + ../src/sv_addr_ag.h ../src/sv_addr.agh ../src/e100boot.h diff --git a/package/etrax-tools/src/e100boot/cbl/ser_noleds/Makefile b/package/etrax-tools/src/e100boot/cbl/ser_noleds/Makefile new file mode 100644 index 000000000..9bb999c38 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/ser_noleds/Makefile @@ -0,0 +1,6 @@ +# +# $Id: Makefile,v 1.1 2002/07/01 14:37:10 pkj Exp $ +# + +IMAGE := ser_noleds.ima +include ../rules.cbl diff --git a/package/etrax-tools/src/e100boot/cbl/ser_noleds/common.d b/package/etrax-tools/src/e100boot/cbl/ser_noleds/common.d new file mode 100644 index 000000000..efe422d77 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/ser_noleds/common.d @@ -0,0 +1,3 @@ +common.o: ../src/common.c ../src/hwregs.h ../src/compiler.h \ + ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h \ + ../src/e100boot.h diff --git a/package/etrax-tools/src/e100boot/cbl/ser_noleds/common_init.d b/package/etrax-tools/src/e100boot/cbl/ser_noleds/common_init.d new file mode 100644 index 000000000..3591272ad --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/ser_noleds/common_init.d @@ -0,0 +1,3 @@ +common_init.o: ../src/common_init.c ../src/hwregs.h ../src/compiler.h \ + ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h \ + ../src/e100boot.h diff --git a/package/etrax-tools/src/e100boot/cbl/ser_noleds/crt0.d b/package/etrax-tools/src/e100boot/cbl/ser_noleds/crt0.d new file mode 100644 index 000000000..e33f99ad1 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/ser_noleds/crt0.d @@ -0,0 +1 @@ +crt0.o: ../src/crt0.S diff --git a/package/etrax-tools/src/e100boot/cbl/ser_noleds/e100boot_version.c b/package/etrax-tools/src/e100boot/cbl/ser_noleds/e100boot_version.c new file mode 100644 index 000000000..c4753698d --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/ser_noleds/e100boot_version.c @@ -0,0 +1 @@ +char e100boot_version[] = "This bootloader was built by root on Wed May 16 21:31:46 CEST 2007.\r\n"; diff --git a/package/etrax-tools/src/e100boot/cbl/ser_noleds/e100boot_version.d b/package/etrax-tools/src/e100boot/cbl/ser_noleds/e100boot_version.d new file mode 100644 index 000000000..fd4569336 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/ser_noleds/e100boot_version.d @@ -0,0 +1 @@ +e100boot_version.o: e100boot_version.c diff --git a/package/etrax-tools/src/e100boot/cbl/ser_noleds/flash.d b/package/etrax-tools/src/e100boot/cbl/ser_noleds/flash.d new file mode 100644 index 000000000..f11cf6824 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/ser_noleds/flash.d @@ -0,0 +1 @@ +flash.o: ../src/flash.c ../src/e100boot.h ../src/compiler.h diff --git a/package/etrax-tools/src/e100boot/cbl/ser_noleds/hwregs.d b/package/etrax-tools/src/e100boot/cbl/ser_noleds/hwregs.d new file mode 100644 index 000000000..7158582d0 --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/ser_noleds/hwregs.d @@ -0,0 +1,2 @@ +hwregs.o: ../src/hwregs.c ../src/compiler.h ../src/hwregs.h \ + ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h diff --git a/package/etrax-tools/src/e100boot/cbl/ser_noleds/ser_init.d b/package/etrax-tools/src/e100boot/cbl/ser_noleds/ser_init.d new file mode 100644 index 000000000..89a6d90de --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/ser_noleds/ser_init.d @@ -0,0 +1,3 @@ +ser_init.o: ../src/ser_init.c ../src/hwregs.h ../src/compiler.h \ + ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h \ + ../src/sv_addr_ag.h ../src/sv_addr.agh ../src/e100boot.h diff --git a/package/etrax-tools/src/e100boot/cbl/src/common.c b/package/etrax-tools/src/e100boot/cbl/src/common.c new file mode 100644 index 000000000..e4ebdc40d --- /dev/null +++ b/package/etrax-tools/src/e100boot/cbl/src/common.c @@ -0,0 +1,486 @@ +#include "hwregs.h" +#include "e100boot.h" + +static void toggle_led(void); + +static void read_load_info(void); +static void decode_load_info(void); + +static void read_file(byte* addr, udword size); + +#if USE_PRINT_DESCR +static void print_descr(dma_descr_T *d); +#endif + +static int memory_test(udword addr, udword size, udword *failed_address); +static void memory_dump(udword *from, udword *to); + +extern byte _Stext[]; +extern byte _Edata[]; + +#ifdef USE_BAUDRATE_CHANGING +byte change_baudrate; +udword new_baudrate; +#endif + +void +level2_boot(void) +{ +#if USE_LEDS + REG_SET(R_PORT_PA_DATA, data_out, 0xaa); +#endif + +#if 0 + io_buf_next = (byte*)IO_BUF_START; + io_buf_cur = (byte*)IO_BUF_START; +#endif + +#if 1 + send_string("\r\n\r\nDevice ID = "); + send_hex(ntohl(tx_header.id), NL); + send_string(e100boot_version); +#endif + +#if 1 + { + udword sum = 0; + byte *b; + + for (b = (byte*)_Stext; b != (byte*)_Edata; b++) { + sum += *b; + } + send_string("Checksum of bootloader is "); + send_hex(sum, NL); + } +#endif + + read_load_info(); + + __asm__ volatile ("jump _start"); +} + +void +toggle_led(void) +{ +#if USE_LEDS + REG_SET(R_PORT_PA_DATA, data_out, 0x55); + + while (1) { + REG_SET(R_PORT_PA_DATA, data_out, ~REG_GET(R_PORT_PA_READ, data_in)); + { + volatile udword i; + + for (i = 0; i != 2000000; i++) + ; + } + } +#else + while (1) { + } +#endif +} + +void +read_load_info(void) +{ +#ifdef USE_BAUDRATE_CHANGING + change_baudrate = 0; +#endif + + send_string("Waiting for load info.\r\n"); + + send_ack(); + + read_file((byte*)IO_BUF_START, IO_BUF_END - IO_BUF_START - CRC_LEN); + send_string("Got load info.\r\n"); + decode_load_info(); + +#ifdef USE_BAUDRATE_CHANGING + if (change_baudrate) { + REG_WR(R_SERIAL0_BAUD, new_baudrate); + { + udword i = 0; + + while (i++ < 1000000) + ; + } + send_ack(); + } +#endif + + toggle_led(); +} + +void +decode_load_info(void) +{ + udword *type_p = (udword*)IO_BUF_START; + udword failed_address; + udword i; + command_T *cmd; + + while (type_p != (udword*)(IO_BUF_END - CRC_LEN)) { /* !!! */ +// send_hex(type_p, NL); + *type_p = ntohl(*type_p); +// send_hex(*type_p, NL); + type_p++; + } + +// memory_dump(IO_BUF_START, IO_BUF_END); + + cmd = (command_T*)IO_BUF_START; + while (cmd->type) { + switch (cmd->type) { + case PACKET_INFO: + send_string("PACKET_INFO\r\n"); + send_hex(cmd->args.packet_info.addr, NL); + send_hex(cmd->args.packet_info.size, NL); + + seq--; + send_ack(); + seq++; + + read_file((byte*)cmd->args.packet_info.addr, cmd->args.packet_info.size); + + (byte*)cmd += sizeof cmd->type + sizeof cmd->args.packet_info; + break; + + case SET_REGISTER: + send_string("SET_REGISTER\r\n"); + send_hex(cmd->args.set_register.addr, NL); + send_hex(cmd->args.set_register.val, NL); + + *(udword*)cmd->args.set_register.addr = cmd->args.set_register.val; + + (byte*)cmd += sizeof cmd->type + sizeof cmd->args.set_register; + break; + + case GET_REGISTER: + send_string("GET_REGISTER\r\n"); + send_hex(cmd->args.get_register.addr, NL); + send_hex(*(udword*)cmd->args.get_register.addr, NL); + + (byte*)cmd += sizeof cmd->type + sizeof cmd->args.get_register; + break; + + case PAUSE_LOOP: + send_string("PAUSE_LOOP\r\n"); + send_hex(cmd->args.pause_loop.pause, NL); + + for (i = cmd->args.pause_loop.pause; i; i--) + ; + + (byte*)cmd += sizeof cmd->type + sizeof cmd->args.pause_loop; + break; + + case MEM_VERIFY: + send_string("MEM_VERIFY\r\n"); + send_hex(cmd->args.mem_verify.addr, NL); + send_hex(cmd->args.mem_verify.val, NL); + + if (*(udword*)cmd->args.mem_verify.addr != cmd->args.mem_verify.val) { + send_string("verify failed\r\n"); + goto decode_failed; + } + + (byte*)cmd += sizeof cmd->type + sizeof cmd->args.mem_verify; + break; + + case MEM_TEST: + send_string("MEM_TEST\r\n"); + send_hex(cmd->args.mem_test.from, NL); + send_hex(cmd->args.mem_test.to, NL); + + if (!memory_test(cmd->args.mem_test.from, + cmd->args.mem_test.to, + &failed_address)) { + send_string("### Memory test failed at "); + send_hex(failed_address, NL); + memory_dump((udword*)DWORD_ALIGN(fai