CHDK Wiki
Register
Line 104: Line 104:
   
 
====stubs_entry_2.c====
 
====stubs_entry_2.c====
  +
 
#include "stubs_asm.h"
 
#include "stubs_asm.h"
   

Revision as of 13:28, 5 April 2009

Canon Powershot SX1

Attention

The SX1 is NOT ported, there's NO CHDK available !

20090217 loRes sx1is 3q

Powershot SX1 Front

20090217 loRes sx1is back

Powershot SX1 Back

Reviews & Specifications

Technical data

  • Digic IV image processor
  • DryOS operating system
  • Sensor: 10 million effective pixels, 1/2.3” new Canon CMOS
  • Lens: 28-560mm, 20x optical zoom, F2.8 - F5.7, IS (shift type)
  • LCD: 2.8 inch TFT, 230,000 pixels, vari-angle, electronic viewfinder
  • Movie clips: 1920 x 1080p (HD) @30fps, stereo sound
  • HDMI output
  • Approx. 4.0 fps continuous shooting
  • Power: 4x AA batteries, optional power supply CA-PS700
  • Dimensions: 127,5 x 88,3 x 87,7 mm; Weight: 585g (without batteries)

Firmware info

As in other Canon PS case, the ver.req file works as well in this model.

Press FUNCSET and DISP simultaneously: It shows the following:

Canon PowerShot SX1 IS
P-ID:3195  PAL D

Firmware Ver GM2.00H
NoError
Feb 4 2009    10:41:18

Subsequent press of DISP (while still holding FUNCSET) reveals:

Adj Ver.021.000

Subsequent press of DISP (while still holding FUNCSET) reveals:

SubCPU Ver. 1.01
IS Firm Ver.  3.03
IS Param Ver.  3.00
VcmCPU Ver 0.42

If you use vers.req instead of ver.req at the last screen you can see more info:

SubCPU Ver. 1.01
Total Shoot: 1020    <=- variating
Zoom Retry Count: 0
Mecha Condition: 0x00000000

If you power on in PLAY mode without ver.req on the SD card and press the FUNCSET and DISP buttons simultaneously, the screen shows:

Firmware Ver. 2.0.0.0


    [ OK ]

For developers

General info

  • Parts of the SX1 code are similar to the SX10, so the SX10 (and partly S5 base) should be the base for a port.
  • Loading dump in IDA:

ROM start: 0xFF810000 ROM Size: 0x003FFFFF Loading adress: 0xFF810000 Loading size: 0x003FFFFF

  • GrAnd's DryOS signatures ('CanonFW_DryOS_A-Series, "DryOS Canon Firmware; A720-based") also works on the SX10
  • The IDC files are also working

o Since the original CHDK.idc script does not run all sub scripts correctly, i use modified versions of the IDC scripts: ida-chdk-idc-dryos-singlerun.7z. The main script CHDK.idc runs all other scripts automatically, manual definition of the ROM_START address is not required anymore (MinEA() used instead).

loader

entry.S

(should be similar than the SX10 )

...
// Turn OFF SD Card power
// to support autostart
	LDR     R3, =0xC0220018
	MOV     R2, #0x44
	STR     R2, [R3]
...
  • The resetcode for SX1 is here:
ROM:FF8298F0 sub_FF8298F0

stubs_entry_2.c

  1. include "stubs_asm.h"

NHSTUB(AllocateUncacheableMemory, 0xFF82806C) NHSTUB(GetDrive_ClusterSize, 0xFF85E284) NHSTUB(GetDrive_TotalClusters, 0xFF85E2B8) NHSTUB(GetDrive_FreeClusters, 0xFF85E2EC) NHSTUB(SetPropertyCase, 0xFF87DAC4) NHSTUB(kbd_read_keys, 0xFF821AF4) NHSTUB(platformsub_kbd_fetch_data, 0xFF84D880) NHSTUB(kbd_read_keys_r2, 0xFF84D130) NHSTUB(qsort, 0xFFAE3D50) NHSTUB(strchr, 0xFF8A0820) NHSTUB(strrchr, 0xFF9FCED8) NHSTUB(TurnOffBackLight, 0xFF893FC8) NHSTUB(vsprintf, 0xFF81CAE8) NHSTUB(VbattGet, 0xFF82046C) NHSTUB(GetZoomLensCurrentPoint, 0xFF9548A8) NHSTUB(GetZoomLensCurrentPosition, 0xFFA820F8) NHSTUB(RefreshPhysicalScreen, 0xFF9FA6FC) NHSTUB(EnterToCompensationEVF, 0xFF825B44) NHSTUB(ExitFromCompensationEVF, 0xFF825BAC) NHSTUB(PT_PlaySound, 0xFF869110) NHSTUB(DoAFLock, 0xFF825898) NHSTUB(UnlockAF, 0xFF8258D0) NHSTUB(LEDDrive, 0xFF84CC34) NHSTUB(WriteSDCard, 0xFF93DD0C) NHSTUB(PostLogicalEventForNotPowerType, 0xFF88328C)

// null sub

NHSTUB(kbd_pwr_off, 0xFFC00958) NHSTUB(kbd_pwr_on, 0xFFC00958) NHSTUB(Mount_FileSystem, 0xFFC00958) NHSTUB(Unmount_FileSystem, 0xFFC00958) NHSTUB(SetZoomActuatorSpeedPercent, 0xFFC00958) NHSTUB(rewinddir, 0xFFC00958) </source>

platform/sub

makefile.inc

#PLATFORMID=0x3195
PLATFORMID=12693

PLATFORMOS=dryos

MEMBASEADDR=0x1900
RESTARTSTART=0x50000

MEMISOSTART=0xACB74

ROMBASEADDR=0xFF810000

PLFLAGS=-DMEMBASEADDR=$(MEMBASEADDR) -DMEMISOSTART=$(MEMISOSTART) -DMEMISOSIZE=$(MEMISOSIZE)
PLFLAGS+=-DRESTARTSTART=$(RESTARTSTART)

NEED_ENCODED_DISKBOOT=very_yes
KEYSYS=d4
ifdef OPT_FI2
include  $(topdir)platform/fi2.inc
endif

LED addresses

0xC0220060  Shortcut/Print button  (blue) (?? --> not yet found in fw, assumably same as SX10)
0xC02200B4  AF lamp                (green) --> entry found
0xC02200B8  Power lamp/button      (orange) (?? --> not yet found in fw, assumably same as SX10)

AF lamp adress found on @sub_FF905E5C (FW 2.00h)...assumably same values for the Shortcut/Pwr lamp

Firmware dumps

  • Firmware dump 1.00E by D-an-W: RS download (Forum link: [1])
  • Firmware dump 1.00F by AlexHB is available from the chdkdumps drop (Forum link: [2])
  • Firmware dump 2.00H by fboesch is available from chkdkdumps drop (Forum link: [3])
Saveas64

Download location for firmware dumps:
P&S firmware dumps mirror

Porting

Started to analyse and find adress entries in FW 2.00h for future CHDK Port to SX1...

http://chdk.setepontos.com/index.php/topic,3410.msg31460.html#msg31460

Official Canon Firmware Update

Canon has released an official firmware update on March 18, 2009 for the SX1 camera (Canon Version 2.0.0.0) which adds RAW capture support.

The firmware update and support information can be found in the links below:

(later two links are correct, but only work after official "login" with SerialNo of an SX1 on first link)