How to do things
AI Noob vs. Pro

List biggest files
List newest files
Show subdir sizes
Search in files
Replace word in files
List dir differences
Send files in LAN

Free Open Source:

Swiss File Knife

a command line
multi function tool.

remove tabs
list dir sizes
find text
filter lines
find in path
collect text
instant ftp or
http server
file transfer
send text
patch text
patch binary
run own cmd
convert crlf
dup file find
md5 lists
fromto clip
hexdump
split files
list latest
compare dirs
save typing
trace http
echo colors
head & tail
dep. listing
find classes
speed shell
zip search
zip dir list

Depeche View
Source Research
First Steps

windows GUI
automation

command line
file encryption

free external tools,
zero install effort,
usb stick compliant:

zip and unzip
diff and merge
reformat xml
reformat source

cpp sources

log tracing
mem tracing
hexdump
using printf

articles

embedded
stat. c array
stat. java array
var. c array
var. java array
view all text
as you type
surf over text
find by click
quick copy
multi view
find nearby
fullscreen
bookmarks
find by path
expressions
location jump
skip accents
clip match
filter lines
edit text
highlight
load filter
hotkey list
receive text
send in C++
send in Java
smooth scroll
touch scroll
fly wxWidgets
fly over Qt
search Java

Supersonic Text File Search - Free Download
 

Fast Embedded Software Development with 4 small batch files for file transfer, remote compile, receive of compiler messages by network

. no installation efforts, using a portable open source command line tool for Windows and Linux.

Embedded Software Development usually means:

  • source editing is done under Windows, as many specialized tools for development exist only there.
  • compile for many different platforms, or toolchains (arm8, arm9, i686 ...).
  • compile for many different target devices.
  • compile on a Linux build server, as all toolchains and libraries are configured only there, with complex build scripts developed over years.
 
Overview: Embedded Development

Overview: Embedded Development

Sync sources, Compile, Send binaries - Step by Step

No matter what version control system you use, there must be a repository folder
on your local disk containing many checked-out projects, like:

   C:\repos\m3player
   C:\repos\m5player
   C:\repos\cleaner1
   C:\repos\cleaner2
   ...

Furthermore, there must be an identical repository folder on the build server,
in your user's home folder. so normally you upload changed source files,
then compile manually on the build server.

Example project: compile and run "m5player" instantly

You changed the source code, and now you want to:

  • compile project m5player
  • compile it for arm8 architecture
  • then run it on a target with IP .188

In the Windows command line, go into C:\repos, then type:

   xmake.bat m5 arm8 188
The xmake batch will:
  • expand short parameters like "m5" to "m5player"
  • upload changed source files from m5player to the build server. this requires:
    • xmakeserv.sh running on the build server, in your repos folder.
    • sfk for Windows binary on your Windows PC.
    • sfk for Linux (i686) binary on the Linux build server.
  • upload a small batch file xmakerem.sh to the build server, which contains commands
    to call the build system. xmakerem.sh is located primarily on your Windows PC
    so you can edit it easily anytime.
  • run xmakerem.sh on the build server.

Any text outputs from the compile, especially error messages, are sent back to your PC.
You can display them:

If xmakerem.sh sucessfully creates a binary,

  • this is then sent to target 192.168.1.188 as a file like binary.new,
    which requires
    • xmaketarg.sh running on your target
    • sfk for Linux/ARM binary on the target
    • capability of your firmware running on .188 to rename binary.new
      to it's own binary name and then to restart itself.
    The firmware on .188 may send trace outputs via network to some trace tool written by your company. Ideally this trace tool contains an option to forward text as plain UDP to any other port, so you can read the firmware traces also directly in Depeche View by Network Text.

    Appendix: SFK/XMake batch files

    xmake.bat: called manually on the command line, or by a script from DView Pro

    @echo off
    rem XMake 0.5 - Cross network make of projects.
    rem Client script for the Windows command line.
    rem
    rem Sync sources, compile remote, receive error output,
    rem forward compiled binaries to target device.
    rem requires:
    rem   sfk.exe on your Windows PC, download from
    rem     stahlworks.com/sfk.exe
    rem   xmakeserv.sh running on build server (which runs sfk)
    rem example call:
    rem   xmake.bat m5 i686 200 clean
    rem   meaning: compile product m5 for architecture i686
    rem            and target ip .200 from scratch (clean)
    
    rem === short parameters ===
    set PRODUCT=%1
    set TOOLCHAIN=%2
    set TARGET=%3
    set CLEAN=%4
    
    IF NOT "%TOOLCHAIN%"=="" GOTO haveparms
    
    echo "usage  : xmake product architecture targetip [clean]"
    echo "example: xmake m3 bbb 192.168.1.100"
    echo "         xmake m5 a13 192.168.1.200 clean"
    GOTO end
    
    :haveparms
    
    rem === dataway defaults ===
    rem = all source code is edited in: LOCAL_WORK
    rem = xmakeserv.sh runs on machine: BUILD_SERVER
    rem = file transfer uses password : TRANSFER_PW
    rem = your Windows PC running DView is  : LOG_TARGET
    rem = the target devices are in a subnet: TARGET_NET
    
    set LOCAL_WORKDRIVE=c:
    set LOCAL_WORKDIR=c:\work
    set BUILD_SERVER=192.168.1.101:2201
    set TRANSFER_PW=mycmdpw123
    set LOG_TARGET=192.168.1.100
    set TARGET_NET=192.168.1
    
    rem === internal inits ===
    rem = this batch file logs to DView by network text 
    rem = (enable Setup / General / Network text).
    rem = file sync should be non verbose.
    rem = redirect output of some commands using TONETLOG.
    rem = sfk uses ftp password from SFK_FTP_PW.
    
    set SFK_LOGTO=term,net:%LOG_TARGET%
    set FTPOPT=-nohead -quiet -noprog
    set TONETLOG=sfk filt "-! files of*sent" -lshigh cyan "<*" +tonetlog
    set SFK_FTP_PW=%TRANSFER_PW%
    
    rem === auto extend short parms to full parms ===
    rem = extend product "m5" to "m5player".
    rem = extend target "200" to "192.168.1.200".
    
    IF "%PRODUCT%"=="m3" (set PRODUCT=m3player)
    IF "%PRODUCT%"=="m5" (set PRODUCT=m5player)
    
    sfk -quiet strlen "%TARGET%"
    IF %ERRORLEVEL% LEQ 3 (set TARGET=%TARGET_NET%.%TARGET%)
    
    rem === show a hello in the network text (SFK_LOGTO) ===
    
    sfk echo "[green]=== xmake: %PRODUCT% %TOOLCHAIN% for %TARGET% [def]" +tolog
    
    rem change parameter "clean" to "0" or "1"
    IF "%CLEAN%"=="clean" ( SET CLEAN="1" ) ELSE ( SET CLEAN="0" )
    
    rem === go into local workspace containing project folders ===
    
    %LOCAL_WORKDRIVE%
    cd %LOCAL_WORKDIR%
    
    rem === 1. sync changed files to build server ===
    
    rem send compile script. enforce unix line endings before upload:
    sfk -quiet=2 remcr xmakerem.sh
    sfk select xmakerem.sh +sft %FTPOPT% %BUILD_SERVER% cput -yes | %TONETLOG%
    
    rem send changed sources. type this all in ONE line:
    sfk select -dir %PRODUCT% -file !.bak !.tmp +sft %FTPOPT% 
        %BUILD_SERVER% cput -yes | %TONETLOG%
    
    rem === 2. run build on server. ===
    
    del xmakerem.log
    rem type this all in ONE line:
    sfk sft %FTPOPT% %BUILD_SERVER% run "bash xmakerem.sh %PRODUCT% %TOOLCHAIN% 
        %TARGET% %CLEAN% %LOG_TARGET% >xmakerem.log 2>&1" -yes | %TONETLOG%
    
    rem get terminal output
    sfk sft %FTPOPT% %BUILD_SERVER% get xmakerem.log
    type xmakerem.log
    
    rem === 3. confirm completion ===
    
    sfk echo "[green]=== xmake done. ===[def]" +tolog
    
    rem === uncomment this to keep script window open when called from DView ===
    rem sfk echo "[Magenta]=== please close window. ===[def]" +tolog +then pause
    
    :end
    
    All batch files for direct reading:

    All batch files in one .zip package:

    xmakebatch.zip

    sfk command line tool sources and binaries for all platforms:

    sfk.zip

    DView Pro example script to call xmake.bat by a click or hotkey:

    netlog clear
    netlog follow
    first.echo "compile remote"
    first.runback "xmake.bat" $1 $2 $3 $shift
    first.sleep 300
    first.activate