~ruther/guix-local

ea1aa4525e322ef1c3ab025257e4e98270272f88 — Theodoros Foradis 8 years ago 2da8865
gnu: openocd: Update to 0.10.0

* gnu/packages/embedded.scm (openocd): Update to 0.10.0.
[arguments] <configure-flags>: Add "--enable-sysfsgpio" flag.
Remove "--enable-oocd_trace" flag.
[arguments] <phases>: Add phase "change-udev-group".
Add phase "install-udev-rules".
* gnu/packages/patches/openocd-nrf52.patch: Modify to apply on 0.10.0.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2 files changed, 83 insertions(+), 92 deletions(-)

M gnu/packages/embedded.scm
M gnu/packages/patches/openocd-nrf52.patch
M gnu/packages/embedded.scm => gnu/packages/embedded.scm +59 -52
@@ 355,59 355,66 @@ language.")
    (license license:bsd-2)))

(define-public openocd
  ;; FIXME: Use tarball release after nrf52 patch is merged.
  (let ((commit "674141e8a7a6413cb803d90c2a20150260015f81")
        (revision "1"))
    (package
      (name "openocd")
      (version (string-append "0.9.0-" revision "."
                              (string-take commit 7)))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://git.code.sf.net/p/openocd/code.git")
                      (commit commit)))
                (sha256
                 (base32
                  "1i86jp0wawq78d73z8hp7q1pn7lmlvhjjr19f7299h4w40a5jf8j"))
                (file-name (string-append name "-" version "-checkout"))
                (patches
                 (search-patches "openocd-nrf52.patch"))))
      (build-system gnu-build-system)
      (native-inputs
       `(("autoconf" ,autoconf)
         ("automake" ,automake)
         ("libtool" ,libtool)
         ("pkg-config" ,pkg-config)))
      (inputs
       `(("hidapi" ,hidapi)
         ("jimtcl" ,jimtcl)
         ("libftdi" ,libftdi)
         ("libjaylink" ,libjaylink)
         ("libusb-compat" ,libusb-compat)))
      (arguments
       '(#:configure-flags
         (append (list "--disable-werror"
                       "--disable-internal-jimtcl"
                       "--disable-internal-libjaylink")
                 (map (lambda (programmer)
                        (string-append "--enable-" programmer))
                      '("amtjtagaccel" "armjtagew" "buspirate" "ftdi"
                        "gw16012" "jlink" "oocd_trace" "opendous" "osbdm"
                        "parport" "aice" "cmsis-dap" "dummy" "jtag_vpi"
                        "remote-bitbang" "rlink" "stlink" "ti-icdi" "ulink"
                        "usbprog" "vsllink" "usb-blaster-2" "usb_blaster"
                        "presto" "openjtag")))
         #:phases
         (modify-phases %standard-phases
           (add-after 'unpack 'autoreconf
             (lambda _
               (zero? (system* "autoreconf" "-vfi")))))))
      (home-page "http://openocd.org")
      (synopsis "On-Chip Debugger")
      (description "OpenOCD provides on-chip programming and debugging support
  (package
    (name "openocd")
    (version "0.10.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://sourceforge/openocd/openocd/"
                                  version "/openocd-" version ".tar.gz"))
              (sha256
               (base32
                "09p57y3c2spqx4vjjlz1ljm1lcd0j9q8g76ywxqgn3yc34wv18zd"))
              ;; FIXME: Remove after nrf52 patch is merged.
              (patches
               (search-patches "openocd-nrf52.patch"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("autoconf" ,autoconf)
       ("automake" ,automake)
       ("libtool" ,libtool)
       ("pkg-config" ,pkg-config)))
    (inputs
     `(("hidapi" ,hidapi)
       ("jimtcl" ,jimtcl)
       ("libftdi" ,libftdi)
       ("libjaylink" ,libjaylink)
       ("libusb-compat" ,libusb-compat)))
    (arguments
     '(#:configure-flags
       (append (list "--disable-werror"
                     "--enable-sysfsgpio"
                     "--disable-internal-jimtcl"
                     "--disable-internal-libjaylink")
               (map (lambda (programmer)
                      (string-append "--enable-" programmer))
                    '("amtjtagaccel" "armjtagew" "buspirate" "ftdi"
                      "gw16012" "jlink" "opendous" "osbdm"
                      "parport" "aice" "cmsis-dap" "dummy" "jtag_vpi"
                      "remote-bitbang" "rlink" "stlink" "ti-icdi" "ulink"
                      "usbprog" "vsllink" "usb-blaster-2" "usb_blaster"
                      "presto" "openjtag")))
       #:phases
       (modify-phases %standard-phases
         (add-before 'configure 'autoreconf
           (lambda _
             (zero? (system* "autoreconf" "-vfi"))))
         (add-after 'autoreconf 'change-udev-group
           (lambda _
             (substitute* "contrib/60-openocd.rules"
               (("plugdev") "dialout"))
             #t))
         (add-after 'install 'install-udev-rules
           (lambda* (#:key outputs #:allow-other-keys)
             (install-file "contrib/60-openocd.rules"
                           (string-append
                            (assoc-ref outputs "out")
                            "/lib/udev/rules.d/")))))))
    (home-page "http://openocd.org")
    (synopsis "On-Chip Debugger")
    (description "OpenOCD provides on-chip programming and debugging support
with a layered architecture of JTAG interface and TAP support.")
      (license license:gpl2+))))
    (license license:gpl2+)))

;; The commits for all propeller tools are the latest versions as published
;; here: https://github.com/dbetz/propeller-gcc

M gnu/packages/patches/openocd-nrf52.patch => gnu/packages/patches/openocd-nrf52.patch +24 -40
@@ 21,19 21,19 @@ Signed-off-by: Michael Dietz <mjdietzx@gmail.com>
---

diff --git a/src/flash/nor/Makefile.am b/src/flash/nor/Makefile.am
index c167e8f..b6a2be3 100644
index 727e4f2..839667c 100644
--- a/src/flash/nor/Makefile.am
+++ b/src/flash/nor/Makefile.am
@@ -37,6 +37,7 @@ NOR_DRIVERS = \
 	niietcm4.c \
 	non_cfi.c \
 	nrf51.c \
+	nrf52.c \
 	numicro.c \
 	ocl.c \
 	pic32mx.c \
@@ -36,6 +36,7 @@ NOR_DRIVERS = \
 	%D%/niietcm4.c \
 	%D%/non_cfi.c \
 	%D%/nrf51.c \
+	%D%/nrf52.c \
 	%D%/numicro.c \
 	%D%/ocl.c \
 	%D%/pic32mx.c \
diff --git a/src/flash/nor/drivers.c b/src/flash/nor/drivers.c
index 56a5cb2..3e071bd 100644
index 56a5cb2..071273e 100644
--- a/src/flash/nor/drivers.c
+++ b/src/flash/nor/drivers.c
@@ -48,6 +48,7 @@ extern struct flash_driver mdr_flash;


@@ 48,7 48,7 @@ index 56a5cb2..3e071bd 100644
 	&mrvlqspi_flash,
 	&niietcm4_flash,
 	&nrf51_flash,
+	&nrf52_flash,
+       &nrf52_flash,
 	&numicro_flash,
 	&ocl_flash,
 	&pic32mx_flash,


@@ 792,47 792,31 @@ index 0000000..7f2bd35
+	.protect_check	= nrf52_protect_check,
+};
diff --git a/tcl/target/nrf52.cfg b/tcl/target/nrf52.cfg
index c1cbf1a..a2567ff 100644
index c1cbf1a..41a22ff 100644
--- a/tcl/target/nrf52.cfg
+++ b/tcl/target/nrf52.cfg
@@ -5,15 +5,22 @@
 source [find target/swj-dp.tcl]
@@ -10,6 +10,13 @@ if { [info exists CHIPNAME] } {
 	set _CHIPNAME nrf52
 }
 
 if { [info exists CHIPNAME] } {
-	set _CHIPNAME $CHIPNAME
+   set _CHIPNAME $CHIPNAME
 } else {
-	set _CHIPNAME nrf52
+   set _CHIPNAME nrf52
+}
+
+# Work-area is a space in RAM used for flash programming, by default use 16kB.
+if { [info exists WORKAREASIZE] } {
+   set _WORKAREASIZE $WORKAREASIZE
+        set _WORKAREASIZE $WORKAREASIZE
+} else {
+   set _WORKAREASIZE 0x4000
 }
 
+        set _WORKAREASIZE 0x4000
+}
+
 if { [info exists CPUTAPID] } {
-	set _CPUTAPID $CPUTAPID
+   set _CPUTAPID $CPUTAPID
 	set _CPUTAPID $CPUTAPID
 } else {
-	set _CPUTAPID 0x2ba01477
+   set _CPUTAPID 0x2ba01477
 }
 
 swj_newdap $_CHIPNAME cpu -expected-id $_CPUTAPID
@@ -21,8 +28,15 @@ swj_newdap $_CHIPNAME cpu -expected-id $_CPUTAPID
 set _TARGETNAME $_CHIPNAME.cpu
@@ -22,7 +29,15 @@ set _TARGETNAME $_CHIPNAME.cpu
 target create $_TARGETNAME cortex_m -chain-position $_TARGETNAME
 
-adapter_khz 10000
 adapter_khz 10000
+$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0
 
-if { ![using_hla] } {
-	cortex_m reset_config sysresetreq
+if {![using_hla]} {
+   cortex_m reset_config sysresetreq
 if { ![using_hla] } {
 	cortex_m reset_config sysresetreq
 }
+
+flash bank $_CHIPNAME.flash nrf52 0x00000000 0 1 1 $_TARGETNAME