Month: May 2014

Linux boot log from a cheap Hi3518 chinese IP Camera

We bought this IP Camera from Alibaba:

http://www.alibaba.com/product-detail/Low-Lux-1-3-Megapixel-HD_1498636656.html

Although the camera module they sent me is not exactly the same from this link’s picture it appears a new version. Doing some debug I discovered that the serial TX/RX pins are connected to pins 15 and 16 respectively from a 20-pin flexible cable connector:

camera

Connecting these pins to USB/Serial adapter and configuring a serial console terminal to 115200 8n1 I got this bootloader/kernel log:

U-Boot 2010.06 (Feb 26 2013 - 17:14:54)

DRAM:  128 MiB
Check spi flash controller v350... Found
Spi(cs1) ID: 0xEF 0x40 0x18 0x00 0x00 0x00
Spi(cs1): Block:64KB Chip:16MB Name:"W25Q128B"
In:    serial
Out:   serial
Err:   serial
Hit any key to stop autoboot:  0 
16384 KiB hi_sfc at 0:0 is now current device


## Booting kernel from Legacy Image at 82000000 ...
   Image Name:   Linux-3.0.8
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1795784 Bytes = 1.7 MiB
   Load Address: 80008000
   Entry Point:  80008000
## Loading init Ramdisk from Legacy Image at 83000000 ...
   Image Name:   JUAN filesystem
   Image Type:   ARM Linux RAMDisk Image (gzip compressed)
   Data Size:    6557696 Bytes = 6.3 MiB
   Load Address: 83000000
   Entry Point:  83000000
   Loading Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Linux version 3.0.8 (root@ubuntu) (gcc version 4.4.1 (Hisilicon_v100(gcc4.4-290+uclibc_0.9.32.1+eabi+linuxpthread)) ) #2 Fri Jan 4 15:10:00 HKT 2013
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
Machine: hi3518
Memory policy: ECC disabled, Data cache writeback
AXI bus clock 200000000.
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 20320
Kernel command line: mem=80M console=ttyAMA0,115200 root=0100 init=/linuxrc mtdparts=hi_sfc:256K(uboot),128K(env),128K(user),256K(config),3328K(kernel),12M(rootfs) ramdisk_size=0XC00000
PID hash table entries: 512 (order: -1, 2048 bytes)
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 80MB = 80MB total
Memory: 69828k/69828k available, 12092k reserved, 0K highmem
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    DMA     : 0xffc00000 - 0xffe00000   (   2 MB)
    vmalloc : 0xc5800000 - 0xfe000000   ( 904 MB)
    lowmem  : 0xc0000000 - 0xc5000000   (  80 MB)
    modules : 0xbf000000 - 0xc0000000   (  16 MB)
      .init : 0xc0008000 - 0xc0028000   ( 128 kB)
      .text : 0xc0028000 - 0xc0486000   (4472 kB)
      .data : 0xc0486000 - 0xc04ad9e0   ( 159 kB)
       .bss : 0xc04ada04 - 0xc04ca620   ( 116 kB)
SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
NR_IRQS:32 nr_irqs:32 32
sched_clock: 32 bits at 100MHz, resolution 10ns, wraps every 42949ms
Console: colour dummy device 80x30
Calibrating delay loop... 218.72 BogoMIPS (lpj=1093632)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
Serial: AMBA PL011 UART driver
uart:0: ttyAMA0 at MMIO 0x20080000 (irq = 5) is a PL011 rev2
console [ttyAMA0] enabled
uart:1: ttyAMA1 at MMIO 0x20090000 (irq = 5) is a PL011 rev2
bio: create slab  at 0
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
cfg80211: Calling CRDA to update world regulatory domain
Switching to clocksource timer1
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 4096 (order: 3, 32768 bytes)
TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
TCP reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
Trying to unpack rootfs image as initramfs...
rootfs image is not initramfs (junk in compressed archive); looks like an initrd
Freeing initrd memory: 6404K
NetWinder Floating Point Emulator V0.97 (double precision)
VFS: Disk quotas dquot_6.5.2
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
squashfs: version 4.0 (2009/01/31) Phillip Lougher
JFFS2 version 2.2. (NAND) �é 2001-2006 Red Hat, Inc.
fuse init (API version 7.16)
msgmni has been set to 148
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
io scheduler noop registered
io scheduler deadline registered (default)
io scheduler cfq registered
brd: module loaded
loop: module loaded
Spi id table Version 1.22
Spi(cs1) ID: 0xEF 0x40 0x18 0x00 0x00 0x00
SPI FLASH start_up_mode is 3 Bytes
Spi(cs1): 
Block:64KB 
Chip:16MB 
Name:"W25Q128B"
spi size: 0x16777216
chip num: 1
6 cmdlinepart partitions found on MTD device hi_sfc
Creating 6 MTD partitions on "hi_sfc":
0x000000000000-0x000000040000 : "uboot"
0x000000040000-0x000000060000 : "env"
0x000000060000-0x000000080000 : "user"
0x000000080000-0x0000000c0000 : "config"
0x0000000c0000-0x000000400000 : "kernel"
0x000000400000-0x000001000000 : "rootfs"
Special nand id table Version 1.35
Hisilicon Nand Flash Controller V301 Device Driver, Version 1.10
Nand ID: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
No NAND device found.
Fixed MDIO Bus: probed
himii: probed
usbcore: registered new interface driver rt2500usb
usbcore: registered new interface driver rt73usb
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
hiusb-ehci hiusb-ehci.0: HIUSB EHCI
hiusb-ehci hiusb-ehci.0: new USB bus registered, assigned bus number 1
hiusb-ehci hiusb-ehci.0: irq 15, io mem 0x100b0000
hiusb-ehci hiusb-ehci.0: USB 0.0 started, EHCI 1.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
hiusb-ohci hiusb-ohci.0: HIUSB OHCI
hiusb-ohci hiusb-ohci.0: new USB bus registered, assigned bus number 2
hiusb-ohci hiusb-ohci.0: irq 16, io mem 0x100a0000
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 1 port detected
usbcore: registered new interface driver cdc_acm
cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
usbcore: registered new interface driver cdc_wdm
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
usbcore: registered new interface driver ums-alauda
usbcore: registered new interface driver ums-datafab
usbcore: registered new interface driver ums-freecom
usbcore: registered new interface driver ums-isd200
usbcore: registered new interface driver ums-jumpshot
usbcore: registered new interface driver ums-sddr09
usbcore: registered new interface driver ums-sddr55
usbcore: registered new interface driver mdc800
mdc800: v0.7.5 (30/10/2000):USB Driver for Mustek MDC800 Digital Camera
mousedev: PS/2 mouse device common for all mice
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
TCP cubic registered
Initializing XFRM netlink socket
NET: Registered protocol family 10
NET: Registered protocol family 17
NET: Registered protocol family 15
lib80211: common routines for IEEE802.11 drivers
Registering the dns_resolver key type
registered taskstats version 1
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
�RAMDISK: squashfs filesystem found at block 0
RAMDISK: Loading 6403KiB [1 disk] into ram disk... done.
VFS: Mounted root (squashfs filesystem) readonly on device 1:0.
Freeing init memory: 128K

            _ _ _ _ _ _ _ _ _ _ _ _
            \  _  _   _  _ _ ___
            / /__/ \ |_/
           / __   /  -  _ ___
          / /  / /  / /
  _ _ _ _/ /  /  \_/  \_ ______
___________\___\__________________

[RCS]: /etc/init.d/S00devs
[RCS]: /etc/init.d/S01udev
udevd (509): /proc/509/oom_adj is deprecated, please use /proc/509/oom_score_adj instead.
[RCS]: /etc/init.d/S10mpp
ADDRCONF(NETDEV_UP): eth0: link is not ready
[RCS]: /etc/init.d/S80network
Hisilicon Media Memory Zone Manager
hi3518_base: module license 'Proprietary' taints kernel.
Disabling lock debugging due to kernel taint
Hisilicon UMAP device driver interface: v3.00
pa:85000000, va:c5a00000
load sys.ko for Hi3518...OK!
load viu.ko for Hi3518...OK!
load vpss.ko ....OK!
load vou.ko ....OK!
load venc.ko for Hi3518...OK!
load group.ko for Hi3518...OK!
load chnl.ko for Hi3518...OK!
load h264e.ko for Hi3518...OK!
load jpege.ko for Hi3518...OK!
load rc.ko for Hi3518...OK!
load region.ko ....OK!
load vda.ko ....OK!
hi_i2c init is ok!
I2C->[i2cm_init]:588 I2C master for HI3518a @ 14:11:12 Jan  9 2013

WATCHDOG->[watchdog_init]:244 Watchdog register succeed!
Kernel: ssp initial ok!
ISP Mod init!
acodec inited!
insert audio
*** Board tools : ver0.0.1_20120501  *** 
[debug]: {source/utils/cmdshell.c:166}cmdstr:himm
0x200f0124: 0x00000000 --> 0x00000000 
[END]
*** Board tools : ver0.0.1_20120501  *** 
[debug]: {source/utils/cmdshell.c:166}cmdstr:himm
0x20140400: 0x00000020 --> 0x00000022 
[END]
*** Board tools : ver0.0.1_20120501  *** 
[debug]: {source/utils/cmdshell.c:166}cmdstr:himm
0x20140008: 0x00000000 --> 0x00000002 
[END]
*** Board tools : ver0.0.1_20120501  *** 
[debug]: {source/utils/cmdshell.c:166}cmdstr:himm
0x20140008: 0x00000002 --> 0x00000000 
[END]
*** Board tools : ver0.0.1_20120501  *** 
[debug]: {source/utils/cmdshell.c:166}cmdstr:himm
0x20140008: 0x00000000 --> 0x00000002 
[END]
do you want to run app.out(y or n)?
Application Trigger!
hwclock: can't open '/dev/misc/rtc': No such file or directory
enter main application
[   sysconf.c: 385] SOC = HI3518C model = hi3518c-inception
[   sysconf.c: 270] Load sysconf success! verion: 1.1.3.1569B10, build:2013-10-25 11:11:2
device sn:C23C0234902512
[   sysconf.c: 338] Build CRC32 72b74581
Device Name: ip-camera
Device Model: IPC
Device ID: C23C0234902512
Device Software Version: 1.1.3 1569B10

Camera: 1
Audio: 0
Sensor: 1
Alarm: 0
Hard Disk Driver: 0
Series Code: C2


[      usrm.c: 210] MD5 "3b1a09a78a862d5c731ed6b5604ded0a"
WATCHDOG->[WATCHDOG_init]:297 get watchdog timeout:10 

hi3518c-inception
0x3000 0xffff
0xa 0x97
0xb 0x11
OV9712 sensor 720P30fps init success!
daylight mode!
saturation:128
[ media_buf.c:  42] media buf init success
[media_pool.c: 222] create media buf ch0_0.264
!!!!fps:25
TIMERTASK->[/root/nfs/git_ipc_1.1.x/path_trunk/ipcam/ipc_v1.1.x.1569/app_rebulid_release/src/timertask/timertask.c]:104 add a task @ 0 interval 1

id:660
APP_OVERLAY_id_display :ID:234902512

0 684  --IPCAM
TIMERTASK->[/root/nfs/git_ipc_1.1.x/path_trunk/ipcam/ipc_v1.1.x.1569/app_rebulid_release/src/timertask/timertask.c]:120 remove a task @ 0
TIMERTASK->[/root/nfs/git_ipc_1.1.x/path_trunk/ipcam/ipc_v1.1.x.1569/app_rebulid_release/src/timertask/timertask.c]:104 add a task @ 0 interval 1

0 342  --IPCAM
[media_pool.c: 222] create media buf ch0_1.264
!!!!fps:25
0_0/1_2 title
overlay:0x6e6d78

0_0/1_2 id
overlay:0x6e6d40

0_0/1_2 clock
overlay:0x6e6d08

TIMERTASK->[/root/nfs/git_ipc_1.1.x/path_trunk/ipcam/ipc_v1.1.x.1569/app_rebulid_release/src/timertask/timertask.c]:120 remove a task @ 0
TIMERTASK->[/root/nfs/git_ipc_1.1.x/path_trunk/ipcam/ipc_v1.1.x.1569/app_rebulid_release/src/timertask/timertask.c]:104 add a task @ 0 interval 1

id:660
APP_OVERLAY_id_display :ID:234902512
isp_ircut_control_daylight

0 684  --IPCAM
0_1/1_2 title
overlay:0x6e6f00

0_1/1_2 clock
overlay:0x6e6ec8

TIMERTASK->[/root/nfs/git_ipc_1.1.x/path_trunk/ipcam/ipc_v1.1.x.1569/app_rebulid_release/src/timertask/timertask.c]:120 remove a task @ 0
TIMERTASK->[/root/nfs/git_ipc_1.1.x/path_trunk/ipcam/ipc_v1.1.x.1569/app_rebulid_release/src/timertask/timertask.c]:104 add a task @ 0 interval 1

0 342  --IPCAM
CH: 0
MODE: bitmap
THRESHOLD: 0.500
SIZE: 20x15
MASK:
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
saturation set:50
contrast set:50
hue set:50
brightness set:50
SDK_ISP_set_scene_mode:0
pstAntiflicker.bEnable = 0
SDK_ISP_sensor_flicker---0:255   mode:1
SDK_ISP_set_WB_mode:0
SDK_ISP_set_ircut_control_mode:0
SDK_ISP_set_ircut_mode:0
SDK_ISP_set_WDR_enable:1
SDK_ISP_set_exposure_mode:0
SDK_ISP_set_denoise_enable:1
SDK_ISP_set_advance_anti_fog_enable:0
[   sysconf.c: 338] Build CRC32 72b74581
TIMERTASK->[/root/nfs/git_ipc_1.1.x/path_trunk/ipcam/ipc_v1.1.x.1569/app_rebulid_release/src/timertask/timertask.c]:104 add a task @ 1 interval 5
TIMERTASK->[/root/nfs/git_ipc_1.1.x/path_trunk/ipcam/ipc_v1.1.x.1569/app_rebulid_release/src/timertask/timertask.c]:104 add a task @ 2 interval 5
cmd:ifconfig eth0:1 192.168.3.33 netmask 255.255.255.0
cmd:ifconfig eth0:2 192.168.168.168 netmask 255.255.255.0
IPCAM_network_init:GMT-8
[     httpd.c:  43] Add a new cgi "/livestream/11"
[     httpd.c:  43] Add a new cgi "/livestream/12"
[     httpd.c:  43] Add a new cgi "/cgi-bin/hi3510/getidentify.cgi"
[     httpd.c:  43] Add a new cgi "/cgi-bin/hi3510/param.cgi"
[     httpd.c:  43] Add a new cgi "/cgi-bin/hi3510/getvdisplayattr.cgi"
[     httpd.c:  43] Add a new cgi "/cgi-bin/hi3510/getvencattr.cgi"
[     httpd.c:  43] Add a new cgi "/cgi-bin/hi3510/ptzctrl.cgi"
[     httpd.c:  43] Add a new cgi "/cgi-bin/hi3510/preset.cgi"
[     httpd.c:  43] Add a new cgi "/cgi-bin/hi3510/ptzup.cgi"
[     httpd.c:  43] Add a new cgi "/cgi-bin/hi3510/ptzdown.cgi"
[     httpd.c:  43] Add a new cgi "/cgi-bin/hi3510/ptzleft.cgi"
[     httpd.c:  43] Add a new cgi "/cgi-bin/hi3510/ptzright.cgi"
[     httpd.c:  43] Add a new cgi "/cgi-bin/hi3510/ptzzoomin.cgi"
[     httpd.c:  43] Add a new cgi "/cgi-bin/hi3510/ptzzoomout.cgi"
[     httpd.c:  43] Add a new cgi "/user/user_list.xml"
[     httpd.c:  43] Add a new cgi "/user/add_user.xml"
[     httpd.c:  43] Add a new cgi "/user/del_user.xml"
[     httpd.c:  43] Add a new cgi "/user/edit_user.xml"
[     httpd.c:  43] Add a new cgi "/user/set_pass.xml"
[     httpd.c:  43] Add a new cgi "/cgi-bin/gw2.cgi"
[     httpd.c:  43] Add a new cgi "/cgi-bin/upload.cgi"
[     httpd.c:  43] Add a new cgi "/cgi-bin/upgrade_rate.cgi"
[     httpd.c:  43] Add a new cgi "/cgi-bin/view.cgi"
[     httpd.c:  43] Add a new cgi "/cgi-bin//view.cgi"
[     httpd.c:  43] Add a new cgi "/cgi-bin/flv.cgi"
[     httpd.c:  43] Add a new cgi "/cgi-bin/today.jpg"
[     httpd.c:  43] Add a new cgi "/moo"
[     httpd.c:  43] Add a new cgi "/whoami"
[     httpd.c:  43] Add a new cgi "/shell"
[     httpd.c:  43] Add a new cgi "/snapshot"
[     httpd.c:  43] Add a new cgi "/mjpeg"
[     httpd.c:  43] Add a new cgi "/mjpeg.html"
[     httpd.c:  43] Add a new cgi "/email"
[     httpd.c:  43] Add a new cgi "/hls.html"
[     httpd.c:  43] Add a new cgi "/m3u8"
[     httpd.c:  43] Add a new cgi "/hls/live.ts"
[     httpd.c:  43] Add a new cgi "/reg"
[     httpd.c:  43] Add a new cgi "/bubble/live"
reflesh arp:ping 192.168.1.1 -c 2
[     spook.c: 217] pid=766 tid=425aa4c0 begin
[     spook.c: 322] "minirtsp" got a spook vocation @ 0!
[     spook.c: 322] "owsp" got a spook vocation @ 1!
[     spook.c: 322] "bubble" got a spook vocation @ 2!
[     spook.c: 322] "onvif" got a spook vocation @ 3!
[     spook.c: 322] "httpd" got a spook vocation @ 4!
[     spook.c: 322] "rtmp" got a spook vocation @ 5!
[     spook.c: 322] "regRW" got a spook vocation @ 6!
PING 192.168.1.1 (192.168.1.1): 56 data bytes
device_id:IP_cameradf9690a02d179a6buozxfFc
generate device id: IP_cameradf9690a02d179a6buozxfFc
gw 192.168.1.1
me 192.168.1.168
[RUDPA |rudpa.c:473:RUDPA_init ]Rudpa start
ESEE DEVICE ID:JAC23C0234902512
send buf=12000000
[  ants_lib.c:2652] [IPC][ants_lib.c:00002652:ANTSLIB_init] Initialize Begin
get para type:ANTS_MID_GET_DEVICECFG -513
[  ants_lib.c:2654] [IPC][ants_lib.c:00002654:ANTSLIB_init] Initialize
[  ants_lib.c:2655] [IPC][ants_lib.c:00002655:ANTSLIB_init] Initialize End
[media_pool.c: 117] Media Pool(ch0_0.264) user changed(1/5)
[media_pool.c: 117] Media Pool(ch0_1.264) user changed(1/8)

--- 192.168.1.1 ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss
[RUDPA |esee.c:413:GetEseePlatInfo ]

Cant Get the EseePlatInfo

Dicas para usinar/fresar aluminio num CNC

Estes links foram postados na lista reprapbr, como achei muito útil e interessante, resolvi salva-los aqui para que possam servir para outras pessoas.

Alumínio não é tudo igual, como algumas pessoas podem pensar. Existem vários tipo de ligas e cada uma adequada para um tipo de uso. Neste site você encontra a sugestão de qual tipo de alumínio é melhor para ser usinado usando um CNC:

http://www.shapeoko.com/wiki/index.php/Materials#Aluminium

Neste outro link você encontrará 10 dicas para usinar alumínio, estas dicas são genéricas, não levam em consideração qual o tipo de alumínio será usinado:

http://blog.cnccookbook.com/2012/03/27/10-tips-for-cnc-router-aluminum-cutting-success/

Interpreting the ELM327 OBD-II response

To read the Speed of your car you need to enter this command on OBD-II dongle devices:

> 010D

Then the module will respond something like that:

7E8 03 41 0D 4A 4A

The first value (7E8) is the ECU address in the CAN Bus (11 bits at 500k bauds).

The second value (03) is the amount of data bytes returned.

The third value (41) is the acknowledge of command received (01 + 40), this 40 is a constant added to all commands.

The forth value (0D) is just a copy of OBD PID that we are interested.

The fifth value (4A) is the data of speed that we want to know. This value is in hexadecimal, like all OBD-II data. In our case 0x4A = 74, it means 74 Km/h.

The sixth is just a copy of fifth, you can modify the configuration to avoid this copy if you want.

Source: http://afterhourscoding.wordpress.com/2013/11/18/back-on-the-vectra/

Using obdsim + usbserial + bluetooth module to emulate a real OBD-II

I need to implement a solution for a customer who needs to read some data from vehicles. Then instead of spend time testing it directly in the car, I decided to use an emulator.

OBDSIM is the right tool to do it on Linux/Windows, but the bluetooth SPP/RFCOMM profile to emulate real device was not working.

Then I decided to test a crazy idea. I connected a USB/Serial adapter to a Bluetooth serial dongle and paired it to Android. It worked like a charm.

I used a bluetooth module HC-06 (JY-MCU BT_BOARD V1.06) connected to a USB/Serial Cypress CP2102. My initial idea was to connect this way:

USB/Serial           BT Module
+5V                  VCC
GND                  GND
RXD                  TXD
TXD                  RXD

But the USB/Serial was unable to supply enough current to HC-06 module, then I used an external 5V power supply to feed the bluetooth module. I unsolder the wire from +5V of USB/Serial and connected to +V of external power supply and soldered the -V to GND as a common ground for USB/Serial and HC-06.

Then just started obdsim passing the USB/Serial device file (ttyUSB0) to be used as real port:

$ obdsim -g gui_fltk -t /dev/ttyUSB0

In the Android smartphone I paired to bluetooth HC-06 device (default password is 0000) and used to Torque OBD-II Android application to read data from obdsim. I added these gauges on Torque: rpm, Throttle, Cooland, MAF and Speed. These are the same gauges I can control in the FLTK GUI of obdsim.

The final setup of my “solution” is depicted in this picture:
obdsim_serial_bluetooth

Flashing NuttX on Viewtool STM32F107 board

Yesterday I received a Viewtool STM32F107 board V1.2 from ebay:
www.ebay.com/itm/250893674758?_trksid=p2055119.m1438.l2649

Unfortunately this board doesn’t have a built-in programmer (well, I didn’t test DFU mode), then I decided to use the st-link v2 programmer:
http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=400581128094

It was easy to connect the st-link programmer to viewtool because it use SWD interface. Only three wires were needed:

ST-Link V2    Viewtool JTAG connector
GND ---------------- GND
CLK ---------------- TCK
IO  ---------------- TMS

Now it is time to compile NuttX to Viewtool board, it is also very easy because NuttX has native support to this board. Then I just configure NuttX profile to viewtool/nsh and selected the Build option to “Raw binary” (default is Intel HEX format).

The compilation was fine and generated the nuttx.bin file. Then I just use this procedure to flash NuttX on viewtool: https://acassis.wordpress.com/2014/01/13/using-a-stm32f4discovery-board-to-flash-stm32f100rb-from-stm32vldiscovery/

Important: You need to remove the USB/Serial module from USART1 otherwise it will interfere in the SWD initialization. Keep the board powered only by miniUSB connector, then openocd wil get control correctly using st-link_v2 interface.