As soon as you finish porting it. (http://wiki.magiclantern.fm/faq#when_will_you_release_the_next_version)I did not bought the.1200d it was a gift. I would. prefer The Nikon 3200 in the same price range but at less ildI would 've magic lantern but apparently I don't. So is there some kind of guide for me to help somehow bring magic lantern to the Canon eos 1200 d.
See reply 12.Sorry, is this mean that developers of previous versions will not port it?
What good it is already working on the 1200d :D, I'll be watching to upgrade my canon ... 8)
/** File I/O **/
NSTUB(0xFF2A2930, FIO_CloseFile)
NSTUB(0xFF2A3900, FIO_FindClose) // FindClose
NSTUB(0xFF2A3820, FIO_FindNextEx)
NSTUB(0xFF2A26E0, FIO_ReadFile)
NSTUB(0xFF2A2790, FIO_SeekSkipFile)
NSTUB(0xFF2A2880, FIO_WriteFile)
NSTUB(0xFF2A316C, _FIO_CreateDirectory)
NSTUB(0xFF2A258C, _FIO_CreateFile)
NSTUB(0xFF2A372C, _FIO_FindFirstEx)
NSTUB(0xFF2A2AAC, _FIO_GetFileSize)
NSTUB(0xFF2A24D0, _FIO_OpenFile)
NSTUB(0xFF2A2638, _FIO_RemoveFile)
NSTUB(0xFF2A2fA4, _FIO_RenameFile)
It dumps 32 MB from 0xF7000000, which covers both ROM0 and ROM1 - that's what you need to run ML in QEMU. For analyzing the code, you can load ROM1 (the second half of that file) at 0xFF000000.
I think that 1200D only have the version 1.0.0.Confirm.
It will be ready when it is ready. ML development has no deadline to meet. It took about 3 years to make 7D run with ML.
I'm quite sure you will not have to wait that long (there were some technical issues to solve for 7D not existing in 1200D) but - please - never ever ask for a timeline again.
FAQ -> Troll questions section -> Last entries.
See reply #75.I've got some stuff to learn, but count me in!
+ Willing to spend several hundred hours to make it work.
ML works by calling functions that were found in the Canon firmware by disassembling it. We have to hardcode the specific addresses of these functions where they are stored in ROM (or in some cases RAM), because there is no API or linking faculties. In other words we only have an ABI, not an API. The locations of these functions are different for different cameras and even different revisions of firmware for the same camera. This is because when Canon compiles their firmware, the compiler is just going to put functions wherever it sees fit, so if Canon changed anything about the code at all (even something as simple as changing a single string literal) all the function locations are going to shift around. Therefore an ML build will only work on a specific camera and firmware version. It can't work on anything else, because it doesn't know the location of any functions it needs to work. ML actually does a checksum of the Canon firmware at startup to make sure it is the correct one and refuses to boot otherwise.Luckily no greek in sight here, very well explained thank you.
~/ml/qemu$ qemu-1.6.0/arm-softmmu/qemu-system-arm -M ?
Supported machines are:
none empty machine
collie Collie PDA (SA-1110)
ML-50D Magic Lantern on Canon EOS 50D
ML-60D Magic Lantern on Canon EOS 60D
ML-600D Magic Lantern on Canon EOS 600D
ML-500D Magic Lantern on Canon EOS 500D
ML-5D2 Magic Lantern on Canon EOS 5D2
ML-5D3 Magic Lantern on Canon EOS 5D3
ML-650D Magic Lantern on Canon EOS 650D
ML-100D Magic Lantern on Canon EOS 100D
ML-7D Magic Lantern on Canon EOS 7D
ML-550D Magic Lantern on Canon EOS 550D
ML-6D Magic Lantern on Canon EOS 6D
50D Canon EOS 50D
60D Canon EOS 60D
600D Canon EOS 600D
500D Canon EOS 500D
5D2 Canon EOS 5D2
5D3 Canon EOS 5D3
650D Canon EOS 650D
100D Canon EOS 100D
7D Canon EOS 7D
550D Canon EOS 550D
6D Canon EOS 6D
nuri Samsung NURI board (Exynos4210)
smdkc210 Samsung SMDKC210 board (Exynos4210)
connex Gumstix Connex (PXA255)
verdex Gumstix Verdex (PXA270)
highbank Calxeda Highbank (ECX-1000)
midway Calxeda Midway (ECX-2000)
integratorcp ARM Integrator/CP (ARM926EJ-S) (default)
kzm ARM KZM Emulation Baseboard (ARM1136)
mainstone Mainstone II (PXA27x)
musicpal Marvell 88w8618 / MusicPal (ARM926EJ-S)
n800 Nokia N800 tablet aka. RX-34 (OMAP2420)
n810 Nokia N810 tablet aka. RX-44 (OMAP2420)
sx1 Siemens SX1 (OMAP310) V2
sx1-v1 Siemens SX1 (OMAP310) V1
cheetah Palm Tungsten|E aka. Cheetah PDA (OMAP310)
realview-eb ARM RealView Emulation Baseboard (ARM926EJ-S)
realview-eb-mpcore ARM RealView Emulation Baseboard (ARM11MPCore)
realview-pb-a8 ARM RealView Platform Baseboard for Cortex-A8
realview-pbx-a9 ARM RealView Platform Baseboard Explore for Cortex-A9
akita Akita PDA (PXA270)
spitz Spitz PDA (PXA270)
borzoi Borzoi PDA (PXA270)
terrier Terrier PDA (PXA270)
lm3s811evb Stellaris LM3S811EVB
lm3s6965evb Stellaris LM3S6965EVB
tosa Tosa PDA (PXA255)
versatilepb ARM Versatile/PB (ARM926EJ-S)
versatileab ARM Versatile/AB (ARM926EJ-S)
vexpress-a9 ARM Versatile Express for Cortex-A9
vexpress-a15 ARM Versatile Express for Cortex-A15
xilinx-zynq-a9 Xilinx Zynq Platform Baseboard for Cortex-A9
z2 Zipit Z2 (PXA27x)
~/ml/qemu$ ./run_canon_fw.sh 60D
make: Entering directory `/home/user/ml/qemu/qemu-1.6.0'
make all-recursive
Making all in pixman
make all-am
make[4]: Nothing to be done for `all-am'.
Making all in test
make[3]: Nothing to be done for `all'.
LEX convert-dtsv0-lexer.lex.c
make[1]: flex: Command not found
BISON dtc-parser.tab.c
make[1]: bison: Command not found
LEX dtc-lexer.lex.c
make[1]: flex: Command not found
CHK version_gen.h
make: Leaving directory `/home/user/ml/qemu/qemu-1.6.0'
00000000 - 00000FFF: eos.tcm_code
40000000 - 40000FFF: eos.tcm_data
00001000 - 3FFFFFFF: eos.ram
40001000 - 7FFFFFFF: eos.ram_uncached
F0000000 - F0FFFFFF: eos.rom0
F1000000 - F1FFFFFF: eos.rom0_mirror_F1
F2000000 - F2FFFFFF: eos.rom0_mirror_F2
F3000000 - F3FFFFFF: eos.rom0_mirror_F3
F4000000 - F4FFFFFF: eos.rom0_mirror_F4
F5000000 - F5FFFFFF: eos.rom0_mirror_F5
F6000000 - F6FFFFFF: eos.rom0_mirror_F6
F7000000 - F7FFFFFF: eos.rom0_mirror_F7
F8000000 - F8FFFFFF: eos.rom1
F9000000 - F9FFFFFF: eos.rom1_mirror_F9
FA000000 - FAFFFFFF: eos.rom1_mirror_FA
FB000000 - FBFFFFFF: eos.rom1_mirror_FB
FC000000 - FCFFFFFF: eos.rom1_mirror_FC
FD000000 - FDFFFFFF: eos.rom1_mirror_FD
FE000000 - FEFFFFFF: eos.rom1_mirror_FE
FF000000 - FFFFFFFF: eos.rom1_mirror_FF
C0000000 - CFFFFFFF: eos.iomem
[EOS] loading 'ROM-60D.BIN' to 0xF0000000-0xF1FFFFFF
[EOS] loading 'ROM-60D.BIN' to 0xF8000000-0xF9FFFFFF
I also tried 7D. So question is do I need some specific machine to run It or may be there are some issues with dump? I am able to disassemble second 16M (ROM1) from dump and have next files:$ ls -lh
total 266M
-rwxrwx--- 1 user user 32M гру 6 14:42 AS
-rw-rw-r-- 1 user user 5,2K гру 6 16:21 disassemble.pl
-rw-rw-r-- 1 user user 16M гру 6 17:05 ROM0.bin
-rw-rw-r-- 1 user user 16M гру 6 17:05 ROM1.bin
-rw-rw-r-- 1 user user 181M гру 6 17:09 ROM1.bin.dis
-rw-rw-r-- 1 user user 17M гру 6 17:07 ROM1.bin.elf
-rw-rw-r-- 1 user user 3,2M гру 6 17:07 ROM1.bin.labels
-rw-rw-r-- 1 user user 2,5M гру 6 17:07 ROM1.bin.strings
PS. Thanks to team for help, and especially for detailed explanations for non-obvious things, it helps alot.
user@user-VirtualBox:~/ml/code_1200d/qemu$ ./run_canon_fw.sh 1200D
make: Entering directory `/home/user/ml/code_1200d/qemu/qemu-1.6.0'
make all-recursive
Making all in pixman
make all-am
make[4]: Nothing to be done for `all-am'.
Making all in test
make[3]: Nothing to be done for `all'.
LEX convert-dtsv0-lexer.lex.c
make[1]: flex: Command not found
BISON dtc-parser.tab.c
make[1]: bison: Command not found
LEX dtc-lexer.lex.c
make[1]: flex: Command not found
CHK version_gen.h
make: Leaving directory `/home/user/ml/code_1200d/qemu/qemu-1.6.0'
00000000 - 00000FFF: eos.tcm_code
40000000 - 40000FFF: eos.tcm_data
00001000 - 3FFFFFFF: eos.ram
40001000 - 7FFFFFFF: eos.ram_uncached
F0000000 - F0FFFFFF: eos.rom0
F1000000 - F1FFFFFF: eos.rom0_mirror_F1
F2000000 - F2FFFFFF: eos.rom0_mirror_F2
F3000000 - F3FFFFFF: eos.rom0_mirror_F3
F4000000 - F4FFFFFF: eos.rom0_mirror_F4
F5000000 - F5FFFFFF: eos.rom0_mirror_F5
F6000000 - F6FFFFFF: eos.rom0_mirror_F6
F7000000 - F7FFFFFF: eos.rom0_mirror_F7
F8000000 - F8FFFFFF: eos.rom1
F9000000 - F9FFFFFF: eos.rom1_mirror_F9
FA000000 - FAFFFFFF: eos.rom1_mirror_FA
FB000000 - FBFFFFFF: eos.rom1_mirror_FB
FC000000 - FCFFFFFF: eos.rom1_mirror_FC
FD000000 - FDFFFFFF: eos.rom1_mirror_FD
FE000000 - FEFFFFFF: eos.rom1_mirror_FE
FF000000 - FFFFFFFF: eos.rom1_mirror_FF
C0000000 - CFFFFFFF: eos.iomem
[EOS] loading 'ROM-1200D.BIN' to 0xF0000000-0xF1FFFFFF
[EOS] loading 'ROM-1200D.BIN' to 0xF8000000-0xF9FFFFFF
[FlashIF] at [0xFF0C000C]: 'Write enable' enabled
[] [0x00000001] -> [0xC020010C] PC: 0xFF0C000C
[] [0x000000FF] -> [0xC020000C] PC: 0xFF0C000C
[] [0x000000FF] -> [0xC020001C] PC: 0xFF0C000C
[] [0x000000FF] -> [0xC020002C] PC: 0xFF0C000C
[] [0x000000FF] -> [0xC020003C] PC: 0xFF0C000C
[] [0x000000FF] -> [0xC020004C] PC: 0xFF0C000C
[] [0x000000FF] -> [0xC020005C] PC: 0xFF0C000C
[] [0x000000FF] -> [0xC020006C] PC: 0xFF0C000C
[] [0x000000FF] -> [0xC020007C] PC: 0xFF0C000C
[] [0x000000FF] -> [0xC020008C] PC: 0xFF0C000C
[] [0x000000FF] -> [0xC020009C] PC: 0xFF0C000C
[] [0x000000FF] -> [0xC02000AC] PC: 0xFF0C000C
[] [0x000000FF] -> [0xC02000BC] PC: 0xFF0C000C
[] [0x000000FF] -> [0xC02000CC] PC: 0xFF0C000C
[] [0x000000FF] -> [0xC02000DC] PC: 0xFF0C000C
[] [0x000000FF] -> [0xC02000EC] PC: 0xFF0C000C
[] [0x000000FF] -> [0xC02000FC] PC: 0xFF0C000C
[Basic] at [0xFF0C000C] [0x00430005] -> [0xC0400008]
[] [0x00000000] <- [0xC0242010] PC: 0xFF0C000C
[] [0x00000001] -> [0xC0242010] PC: 0xFF0C000C
[Int] Write to Int space [0x43210DCB] -> [0xC0201100] PC: [0xFF0C5244]
[Int] Write to Int space [0xFEA98765] -> [0xC0201104] PC: [0xFF0C5244]
[Int] Write to Int space [0x00000001] -> [0xC0201200] PC: [0xFF0C5244]
[] [0x00000008] -> [0xC0203008] PC: 0xFF0C5314
[Int] Enabled interrupt ID 0x0A PC: [0xFF0C5294]
[Basic] at [0xFF0C0AAC] [0x00000000] -> [0xC0400018]
[Basic] at [0xFF0C53D0] [0x00000000] <- [0xC0400008]
[Basic] at [0xFF0C53D0] [0x00001000] -> [0xC0400008]
[Basic] at [0xFF0C0ABC] [0x00000000] <- [0xC0400000]
[Timer] at [0xFF0C5354] [0x80000000] -> [0xC0210200]
[Timer] at [0xFF0C5374] [0x00000002] -> [0xC0210204]
[Timer] at [0xFF0C5374] [0x00000003] -> [0xC0210214]
[Timer] at [0xFF0C0AEC] [0x0000270F] -> [0xC0210208]
[Timer] at [0xFF0C53AC] [0x00000001] -> [0xC0210210]
[Timer] at [0xFF0C53AC] Starting triggering
[EOS] trigger int 0x0A (delayed!)
[Timer] at [0xFF0C53AC] [0x00000001] -> [0xC0210200]
[Int] Enabled interrupt ID 0x2E PC: [0xFF0C5274]
[Int] Enabled interrupt ID 0x3A PC: [0xFF0C5274]
[] [0x00000000] <- [0xC05000D0] PC: 0xFF12B4F4
[] [0x00000000] -> [0xC05000D0] PC: 0xFF12B4F4
[] [0x40016900] -> [0xC05000C0] PC: 0xFF12B4F4
[] [0x00000080] -> [0xC05000C4] PC: 0xFF12B4F4
[] [0x40016900] -> [0xC05000C8] PC: 0xFF12B4F4
[] [0x00000080] -> [0xC05000CC] PC: 0xFF12B4F4
[] [0x00000000] -> [0xC05000D4] PC: 0xFF12B4F4
[] [0x00000017] -> [0xC05000D8] PC: 0xFF12B4F4
[] [0x00010023] -> [0xC05000D0] PC: 0xFF12B4F4
[TIO] Reset RX indicator
K327 READY
[GPIO] at [0xFF0C241C] [0x00000010] -> [0xC0222004]
[GPIO] at [0xFF119C00] [0x00000025] -> [0xC0221300]
[] [0x00000004] -> [0xC020302C] PC: 0xFF119C00
[GPIO] at [0xFF119C00] [0x00000024] -> [0xC0221304]
[] [0x00000004] -> [0xC0203030] PC: 0xFF119C00
[GPIO] at [0xFF119C00] [0x00000007] -> [0xC0221308]
[GPIO] at [0xFF119C00] [0x0000004F] -> [0xC022130C]
[] [0x00000004] -> [0xC0203038] PC: 0xFF119C00
[GPIO] at [0xFF119C00] [0x0000004E] -> [0xC0221310]
[GPIO] at [0xFF119C00] [0x0000000D] -> [0xC0221314]
[Int] Write to Int space [0x43210DCB] -> [0xC0201100] PC: [0xFF0C5244]
[Int] Write to Int space [0xFEA98765] -> [0xC0201104] PC: [0xFF0C5244]
[Int] Write to Int space [0x00000001] -> [0xC0201200] PC: [0xFF0C5244]
[] [0x00000000] -> [0xC0243110] PC: 0xFF2B2098
[] [0x00000000] -> [0xC0243214] PC: 0xFF2B20E8
[] [0x00000000] <- [0xC0243214] PC: 0xFF2B20E8
[] [0x00000000] -> [0xC024321C] PC: 0xFF2B20FC
[] [0x00000000] <- [0xC024321C] PC: 0xFF2B20FC
[] [0x00000000] -> [0xC0243120] PC: 0xFF2B2098
[] [0x00000000] -> [0xC0243224] PC: 0xFF2B20E8
[] [0x00000000] <- [0xC0243224] PC: 0xFF2B20E8
[] [0x00000000] -> [0xC024322C] PC: 0xFF2B20FC
[] [0x00000000] <- [0xC024322C] PC: 0xFF2B20FC
[] [0x00000000] -> [0xC0243130] PC: 0xFF2B2098
[] [0x00000000] -> [0xC0243234] PC: 0xFF2B20E8
[] [0x00000000] <- [0xC0243234] PC: 0xFF2B20E8
[] [0x00000000] -> [0xC024323C] PC: 0xFF2B20FC
[] [0x00000000] <- [0xC024323C] PC: 0xFF2B20FC
[] [0x00000000] -> [0xC0243140] PC: 0xFF2B2098
[] [0x00000000] -> [0xC0243244] PC: 0xFF2B20E8
[] [0x00000000] <- [0xC0243244] PC: 0xFF2B20E8
[] [0x00000000] -> [0xC024324C] PC: 0xFF2B20FC
[] [0x00000000] <- [0xC024324C] PC: 0xFF2B20FC
[] [0x00000000] -> [0xC0243150] PC: 0xFF2B2098
[] [0x00000000] -> [0xC0243254] PC: 0xFF2B20E8
[] [0x00000000] <- [0xC0243254] PC: 0xFF2B20E8
[] [0x00000000] -> [0xC024325C] PC: 0xFF2B20FC
[] [0x00000000] <- [0xC024325C] PC: 0xFF2B20FC
[] [0x00000000] -> [0xC0243160] PC: 0xFF2B2098
[] [0x00000000] -> [0xC0243264] PC: 0xFF2B20E8
[] [0x00000000] <- [0xC0243264] PC: 0xFF2B20E8
[] [0x00000000] -> [0xC024326C] PC: 0xFF2B20FC
[] [0x00000000] <- [0xC024326C] PC: 0xFF2B20FC
[] [0x00000000] -> [0xC0243170] PC: 0xFF2B2098
[] [0x00000000] -> [0xC0243274] PC: 0xFF2B20E8
[] [0x00000000] <- [0xC0243274] PC: 0xFF2B20E8
[] [0x00000000] -> [0xC024327C] PC: 0xFF2B20FC
[] [0x00000000] <- [0xC024327C] PC: 0xFF2B20FC
[] [0x00000000] -> [0xC0243180] PC: 0xFF2B2098
[] [0x00000000] -> [0xC0243284] PC: 0xFF2B20E8
[] [0x00000000] <- [0xC0243284] PC: 0xFF2B20E8
[] [0x00000000] -> [0xC024328C] PC: 0xFF2B20FC
[] [0x00000000] <- [0xC024328C] PC: 0xFF2B20FC
[] [0x00000000] -> [0xC0243190] PC: 0xFF2B2098
[] [0x00000000] -> [0xC0243294] PC: 0xFF2B20E8
[] [0x00000000] <- [0xC0243294] PC: 0xFF2B20E8
[] [0x00000000] -> [0xC024329C] PC: 0xFF2B20FC
[] [0x00000000] <- [0xC024329C] PC: 0xFF2B20FC
[] [0x00000000] -> [0xC02431A0] PC: 0xFF2B2098
[] [0x00000000] -> [0xC02432A4] PC: 0xFF2B20E8
[] [0x00000000] <- [0xC02432A4] PC: 0xFF2B20E8
[] [0x00000000] -> [0xC02432AC] PC: 0xFF2B20FC
[] [0x00000000] <- [0xC02432AC] PC: 0xFF2B20FC
[] [0x00000000] -> [0xC02431B0] PC: 0xFF2B2098
[] [0x00000000] -> [0xC02432B4] PC: 0xFF2B20E8
[] [0x00000000] <- [0xC02432B4] PC: 0xFF2B20E8
[] [0x00000000] -> [0xC02432BC] PC: 0xFF2B20FC
[] [0x00000000] <- [0xC02432BC] PC: 0xFF2B20FC
[] [0x00000000] -> [0xC02431C0] PC: 0xFF2B2098
[] [0x00000000] -> [0xC02432C4] PC: 0xFF2B20E8
[] [0x00000000] <- [0xC02432C4] PC: 0xFF2B20E8
[] [0x00000000] -> [0xC02432CC] PC: 0xFF2B20FC
[] [0x00000000] <- [0xC02432CC] PC: 0xFF2B20FC
[] [0x00000000] -> [0xC02431D0] PC: 0xFF2B2098
[] [0x00000000] -> [0xC02432D4] PC: 0xFF2B20E8
[] [0x00000000] <- [0xC02432D4] PC: 0xFF2B20E8
[] [0x00000000] -> [0xC02432DC] PC: 0xFF2B20FC
[] [0x00000000] <- [0xC02432DC] PC: 0xFF2B20FC
[] [0x00000000] -> [0xC02431E0] PC: 0xFF2B2098
[] [0x00000000] -> [0xC02432E4] PC: 0xFF2B20E8
[] [0x00000000] <- [0xC02432E4] PC: 0xFF2B20E8
[] [0x00000000] -> [0xC02432EC] PC: 0xFF2B20FC
[] [0x00000000] <- [0xC02432EC] PC: 0xFF2B20FC
[] [0x00000000] -> [0xC0202000] PC: 0xFF2B2138
[] [0x00000000] -> [0xC0242200] PC: 0xFF2B2160
[] [0x00000000] -> [0xC0242204] PC: 0xFF2B2170
[] [0x00000000] -> [0xC0202004] PC: 0xFF2B2138
[] [0x00000000] -> [0xC0242210] PC: 0xFF2B2160
[] [0x00000000] -> [0xC0242214] PC: 0xFF2B2170
[] [0x00000000] -> [0xC0202008] PC: 0xFF2B2138
[] [0x00000000] -> [0xC0242220] PC: 0xFF2B2160
[] [0x00000000] -> [0xC0242224] PC: 0xFF2B2170
[] [0x00000000] -> [0xC020200C] PC: 0xFF2B2138
[] [0x00000000] -> [0xC0242230] PC: 0xFF2B2160
[] [0x00000000] -> [0xC0242234] PC: 0xFF2B2170
[] [0x00000000] -> [0xC0202010] PC: 0xFF2B2138
[] [0x00000000] -> [0xC0242240] PC: 0xFF2B2160
[] [0x00000000] -> [0xC0242244] PC: 0xFF2B2170
[] [0x00000000] -> [0xC0202014] PC: 0xFF2B2138
[] [0x00000000] -> [0xC0242250] PC: 0xFF2B2160
[] [0x00000000] -> [0xC0242254] PC: 0xFF2B2170
[] [0x00000000] -> [0xC0202018] PC: 0xFF2B2138
[] [0x00000000] -> [0xC0242260] PC: 0xFF2B2160
[] [0x00000000] -> [0xC0242264] PC: 0xFF2B2170
[] [0x00000000] -> [0xC020201C] PC: 0xFF2B2138
[] [0x00000000] -> [0xC0242270] PC: 0xFF2B2160
[] [0x00000000] -> [0xC0242274] PC: 0xFF2B2170
[] [0x00000000] -> [0xC0243700] PC: 0xFF2B2200
[] [0x00000000] -> [0xC0243710] PC: 0xFF2B2200
[] [0x00000001] -> [0xC024311C] PC: 0xFF2B21A4
[] [0x00000001] -> [0xC024312C] PC: 0xFF2B21A4
[] [0x00000001] -> [0xC024313C] PC: 0xFF2B21A4
[] [0x00000001] -> [0xC024314C] PC: 0xFF2B21A4
[] [0x00000001] -> [0xC024315C] PC: 0xFF2B21A4
[] [0x00000001] -> [0xC024316C] PC: 0xFF2B21A4
[] [0x00000001] -> [0xC024317C] PC: 0xFF2B21A4
[] [0x00000001] -> [0xC024318C] PC: 0xFF2B21A4
[] [0x00000001] -> [0xC024319C] PC: 0xFF2B21A4
[] [0x00000001] -> [0xC02431AC] PC: 0xFF2B21A4
[] [0x00000001] -> [0xC02431BC] PC: 0xFF2B21A4
[] [0x00000001] -> [0xC02431CC] PC: 0xFF2B21A4
[] [0x00000001] -> [0xC02431DC] PC: 0xFF2B21A4
[] [0x00000001] -> [0xC02431EC] PC: 0xFF2B21A4
[] [0x00000000] -> [0xC0243800] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243804] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243808] PC: 0xFF2B2214
[] [0x00000000] -> [0xC024380C] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243810] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243814] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243818] PC: 0xFF2B2214
[] [0x00000000] -> [0xC024381C] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243820] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243824] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243828] PC: 0xFF2B2214
[] [0x00000000] -> [0xC024382C] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243830] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243834] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243838] PC: 0xFF2B2214
[] [0x00000000] -> [0xC024383C] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243840] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243844] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243848] PC: 0xFF2B2214
[] [0x00000000] -> [0xC024384C] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243850] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243854] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243858] PC: 0xFF2B2214
[] [0x00000000] -> [0xC024385C] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243860] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243864] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243868] PC: 0xFF2B2214
[] [0x00000000] -> [0xC024386C] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243870] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243874] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243878] PC: 0xFF2B2214
[] [0x00000000] -> [0xC024387C] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243880] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243884] PC: 0xFF2B2214
[] [0x00000000] -> [0xC0243888] PC: 0xFF2B2214
[] [0x00000000] -> [0xC024388C] PC: 0xFF2B2214
[Int] Enabled interrupt ID 0x1A PC: [0xFF0C5274]
[Int] Enabled interrupt ID 0x1B PC: [0xFF0C5274]
[Int] Enabled interrupt ID 0x1C PC: [0xFF0C5274]
[Int] Enabled interrupt ID 0x1D PC: [0xFF0C5274]
[Int] Enabled interrupt ID 0x1E PC: [0xFF0C5274]
[Int] Enabled interrupt ID 0x1F PC: [0xFF0C5274]
[Int] Enabled interrupt ID 0x10 PC: [0xFF0C5274]
[Int] Enabled interrupt ID 0x20 PC: [0xFF0C5274]
[Int] Enabled interrupt ID 0x21 PC: [0xFF0C5274]
[Int] Enabled interrupt ID 0x22 PC: [0xFF0C5274]
[Int] Enabled interrupt ID 0x23 PC: [0xFF0C5274]
[Int] Enabled interrupt ID 0x24 PC: [0xFF0C5274]
[Int] Enabled interrupt ID 0x25 PC: [0xFF0C5274]
[Int] Enabled interrupt ID 0x26 PC: [0xFF0C5274]
[Int] Enabled interrupt ID 0x27 PC: [0xFF0C5274]
[] [0x00000000] -> [0xC0243160] PC: 0xFF2B2098
[] [0x00000000] -> [0xC0243264] PC: 0xFF2B20E8
[] [0x00000000] <- [0xC0243264] PC: 0xFF2B20E8
[] [0x00000000] -> [0xC0243170] PC: 0xFF2B2098
[] [0x00000000] -> [0xC0243274] PC: 0xFF2B20E8
[] [0x00000000] <- [0xC0243274] PC: 0xFF2B20E8
[] [0x00000000] -> [0xC0243180] PC: 0xFF2B2098
[] [0x00000000] -> [0xC0243284] PC: 0xFF2B20E8
[] [0x00000000] <- [0xC0243284] PC: 0xFF2B20E8
[] [0x00000000] -> [0xC0243190] PC: 0xFF2B2098
[] [0x00000000] -> [0xC0243294] PC: 0xFF2B20E8
[] [0x00000000] <- [0xC0243294] PC: 0xFF2B20E8
[] [0x00000000] -> [0xC02431A0] PC: 0xFF2B2098
[] [0x00000000] -> [0xC02432A4] PC: 0xFF2B20E8
[] [0x00000000] <- [0xC02432A4] PC: 0xFF2B20E8
[] [0x00000000] -> [0xC02431B0] PC: 0xFF2B2098
[] [0x00000000] -> [0xC02432B4] PC: 0xFF2B20E8
[] [0x00000000] <- [0xC02432B4] PC: 0xFF2B20E8
[] [0x00000000] -> [0xC02431C0] PC: 0xFF2B2098
[] [0x00000000] -> [0xC02432C4] PC: 0xFF2B20E8
[] [0x00000000] <- [0xC02432C4] PC: 0xFF2B20E8
[] [0x00000000] -> [0xC02431D0] PC: 0xFF2B2098
[] [0x00000000] -> [0xC02432D4] PC: 0xFF2B20E8
[] [0x00000000] <- [0xC02432D4] PC: 0xFF2B20E8
[] [0x40000401] -> [0xC0242010] PC: 0xFF2B2000
[Basic] at [0xFF1264C0] [0x00000000] <- [0xC0400008]
[Basic] at [0xFF1264C0] [0x00200000] -> [0xC0400008]
[Basic] at [0xFF126BB0] [0x00000000] <- [0xC0400008]
[Basic] at [0xFF126BB0] [0x01000000] -> [0xC0400008]
[DMA1] [0x00000001] -> [0xC0A10000]
[DMA2] [0x00000001] -> [0xC0A20000]
[DMA3] [0x00000001] -> [0xC0A30000]
[DMA4] [0x00000001] -> [0xC0A40000]
[GPIO] at [0xFF0C29D8] [0x00000012] -> [0xC0222004]
[GPIO] at [0xFF0C27E0] [0x00000012] -> [0xC0222000]
[DMA1] [0x00000000] -> [0xC0A10004]
[DMA1] [0x00000000] -> [0xC0A10010]
[DMA1] [0xF8CA0000] -> [0xC0A10018]
[DMA1] [0x403D3500] -> [0xC0A1001C]
[DMA1] [0x0026BBAC] -> [0xC0A10020]
[DMA1] [0x00000007] -> [0xC0A10014]
[Int] Enabled interrupt ID 0x2F PC: [0xFF0C5274]
[DMA1] Copy [0xF8CA0000] -> [0x403D3500], length [0x0026BBAC], flags [0x00030001]
[DMA1] OK
[EOS] trigger int 0x2F
[Int] Requested int reason [0x000000BC] <- [0xC0201004] PC: [0x0000050C]
[DMA1] [0x00000000] -> [0xC0A10010]
ASSERT : Startup\Startup.c, Task = Startup, Line 364
ASSERT : Multicast\PropertyMgr.c, Task = Startup, Line 452
... more same asserts
[DM] ASSERT! TryPostEvent() fail.ASSERT : Multicast\PropertyMgr.c, Task = Startup, Line 452
ASSERT : Multicast\PropertyMgr.c, Task = Startup, Line 452
... more same asserts
ASSERT : Multicast\PropertyMgr.c, Task = Startup, Line 452
ASSERT : Multicast\PropertyMgr.c, Task = , Line 452
... more same asserts
< Error Exception>
TYPE : 4
ISR : 0
TASK IDSR : 453
TASK Name : (null)
R 0 : 0
R 1 : 0
R 2 : 0
R 3 : 0
R 4 : 0
R 5 : 0
R 6 : 0
R 7 : 0
R 8 : 0
R 9 : 0
R10 : 0
R11 : 0
R12 : 0
R13 : 1603c
R14 : 0
PC : 0
CPSR : 0
[DM] Fail!!! DM_WriteLogToFROM< Error Exception>
TYPE : 4
ISR : 0
TASK IDSR : 453
TASK Name : (null)
R 0 : 0
R 1 : 0
R 2 : 0
R 3 : 1
R 4 : 0
R 5 : 0
R 6 : 0
R 7 : 0
R 8 : 0
R 9 : 0
R10 : 0
R11 : 0
R12 : 0
R13 : 20f000
R14 : ff0c71b0
PC : 4
CPSR : 60000093
qemu: fatal: Trying to execute code outside RAM or ROM at 0xeeeeeeee
R00=00000000 R01=00000000 R02=00000000 R03=00000001
R04=eeeeeeee R05=eeeeeeee R06=eeeeeeee R07=00000000
R08=00000000 R09=00000000 R10=00000000 R11=00000000
R12=00000000 R13=0020f010 R14=ff0c71b0 R15=eeeeeeee
PSR=60000013 -ZC- A svc32
FPSCR: 00000000./run_canon_fw.sh: line 5: 20357 Aborted (core dumped) $QEMU_PATH/arm-softmmu/qemu-system-arm -M $1
step 0: setup the toolchain (http://www.magiclantern.fm/forum/index.php?topic=991.0)
step 1: dump the firmware (see a couple posts back)
step 2: analyze/decompile the firmware dump to find function stubs (http://www.magiclantern.fm/forum/index.php?topic=12177.0)
step 3: run it in QEMU (https://bitbucket.org/hudson/magic-lantern/branch/qemu)
step 4: if you get this far, get in touch with a1ex to create a bootflag fir, so you can run on actual camera
see also: some of the porting work done by recently for 70D (look at the commit history and diffs):
https://bitbucket.org/hudson/magic-lantern/branch/70d-support
https://bitbucket.org/hudson/magic-lantern/pull-request/620/add-support-for-eos-70d-111-both-revisions/diff#
but now I am getting a werid error like file not found, this is my terminal output:
ML_MODULES_SYM_NAME=x70_$(FW_VERSION).sym
_find_ml_card();
_info_led_blink(1, 500, 500);
_load_fonts();
_info_led_blink(1, 500, 500);
// for debugging: uncomment this to start only some specific tasks
// tip: use something like grep -nr TASK_CREATE ./ to find all task names
#if 1
if (
//~ streq(task->name, "audio_meter_task") ||
//~ streq(task->name, "audio_level_task") ||
//~ streq(task->name, "bitrate_task") ||
//~ streq(task->name, "cartridge_task") ||
//~ streq(task->name, "cls_task") ||
//~ streq(task->name, "console_task") ||
streq(task->name, "debug_task") ||
//~ streq(task->name, "dmspy_task") ||
//~ streq(task->name, "focus_task") ||
//~ streq(task->name, "focus_misc_task") ||
//~ streq(task->name, "fps_task") ||
//~ streq(task->name, "iso_adj_task") ||
//~ streq(task->name, "joypress_task") ||
//~ streq(task->name, "light_sensor_task") ||
//~ streq(task->name, "livev_hiprio_task") ||
//~ streq(task->name, "livev_loprio_task") ||
streq(task->name, "menu_task") ||
streq(task->name, "menu_redraw_task") ||
//~ streq(task->name, "morse_task") ||
//~ streq(task->name, "movtweak_task") ||
//~ streq(task->name, "ms100_clock_task") ||
//~ streq(task->name, "notifybox_task") ||
//~ streq(task->name, "seconds_clock_task") ||
//~ streq(task->name, "shoot_task") ||
//~ streq(task->name, "tweak_task") ||
//~ streq(task->name, "beep_task") ||
//~ streq(task->name, "crash_log_task") ||
0 )
[DM] FROM Write Complete!!!
< Error Exception>
TYPE : 4
ISR : 0
TASK IDSR : 50397259
TASK Name : menu_task
R 0 : 0
R 1 : c47f8
R 2 : 10e200
R 3 : 0
R 4 : cc42e0
R 5 : 42100074
R 6 : cbaeb0
R 7 : c8209c
R 8 : 0
R 9 : cbaf50
R10 : 19980218
R11 : 19980218
R12 : 103b64
R13 : 1603c
R14 : ff2be274
PC : ff2be274
CPSR : 20000093
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36mmenu_redraw_task:ff126194 [0m] register_interrupt(null, 0x34, 0xff12602c, 0x1)
[0m[[1;36mmenu_redraw_task:ff11ae48 [0m] (00:16) [RTC] !! RTC_REGISTER_XST_BIT ERROR !!
[0m[[1;36mmenu_redraw_task:ff126194 [0m] register_interrupt(null, 0x34, 0xff12602c, 0x1)
[0m[[1;36mmenu_redraw_task:ff11ae48 [0m] (00:16) [RTC] !! RTC_REGISTER_XST_BIT ERROR !!
[0m[[1;36mmenu_redraw_task:ff126194 [0m] register_interrupt(null, 0x34, 0xff12602c, 0x1)
[0m[[1;36mmenu_redraw_task:ff11ae48 [0m] (00:16) [RTC] !! RTC_REGISTER_XST_BIT ERROR !!
[0m[[1;36mmenu_redraw_task:ff126194 [0m] register_interrupt(null, 0x34, 0xff12602c, 0x1)
[0m[[1;36mmenu_redraw_task:ff11ae48 [0m] (00:16) [RTC] !! RTC_REGISTER_XST_BIT ERROR !!
[0m[[1;36mmenu_redraw_task:ff126194 [0m] register_interrupt(null, 0x34, 0xff12602c, 0x1)
[0m[[1;36mmenu_redraw_task:ff11ae48 [0m] (00:16) [RTC] !! RTC_REGISTER_XST_BIT ERROR !!
[0m[[1;36mmenu_redraw_task:ff126194 [0m] register_interrupt(null, 0x34, 0xff12602c, 0x1)
[0m[[1;36mmenu_redraw_task:ff11ae48 [0m] (00:16) [RTC] !! RTC_REGISTER_XST_BIT ERROR !!
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36mmenu_redraw_task:ff126194 [0m] register_interrupt(null, 0x34, 0xff12602c, 0x1)
[0m[[1;36mmenu_redraw_task:ff11ae48 [0m] (00:16) [RTC] !! RTC_REGISTER_XST_BIT ERROR !!
[0m[[1;36mmenu_redraw_task:ff126194 [0m] register_interrupt(null, 0x34, 0xff12602c, 0x1)
[0m[[1;36mmenu_redraw_task:ff11ae48 [0m] (00:16) [RTC] !! RTC_REGISTER_XST_BIT ERROR !!
[0m[[1;36mmenu_redraw_task:ff126194 [0m] register_interrupt(null, 0x34, 0xff12602c, 0x1)
[0m[[1;36mmenu_redraw_task:ff11ae48 [0m] (00:16) [RTC] !! RTC_REGISTER_XST_BIT ERROR !!
[0m[[1;36mmenu_redraw_task:ff126194 [0m] register_interrupt(null, 0x34, 0xff12602c, 0x1)
[0m[[1;36mmenu_redraw_task:ff11ae48 [0m] (00:16) [RTC] !! RTC_REGISTER_XST_BIT ERROR !!
[0m[[1;36mmenu_redraw_task:ff126194 [0m] register_interrupt(null, 0x34, 0xff12602c, 0x1)
[0m[[1;36mmenu_redraw_task:ff11ae48 [0m] (00:16) [RTC] !! RTC_REGISTER_XST_BIT ERROR !!
[0m[[1;36mmenu_redraw_task:ff126194 [0m] register_interrupt(null, 0x34, 0xff12602c, 0x1)
[0m[[1;36mmenu_redraw_task:ff11ae48 [0m] (00:16) [RTC] !! RTC_REGISTER_XST_BIT ERROR !!
[0m[[1;31m INT-50h:ff125eb0 [0m] (00:01) [PM] DisablePowerSave (Counter = 3)
[0m[[1;31m INT-50h:ff125f20 [0m] (00:01) [PM] EnablePowerSave (Counter = 2)
[0m[[1;31m INT-36h:ff297934 [0m] [1;34mmpu_recv( 06 05 06 04 01 00 )
[0m[0m[[1;36m MainCtrl:ff0ce43c [0m] (9c:01) ID:4(27)
[0m[[1;36m MainCtrl:ff0cc05c [0m] (89:03) bindReceiveSwitch (4, 1)
[0m[[1;36m MainCtrl:ff0d14b4 [0m] (85:03) GUI_Control:13 0x0
[0m[[1;36m PropMgr:ff0d4740 [0m] (8d:02) emAutoPowerOffRequestChangeCBR (3)
[0m[[1;36m PropMgr:ff10f9b0 [0m] [1;34mmpu_send( 06 05 03 11 03 00 )
[0m[0m[[1;36m PropMgr:ff125eb0 [0m] (00:01) [PM] DisablePowerSave (Counter = 3)
[0m[[1;36m PropMgr:ff125f20 [0m] (00:01) [PM] EnablePowerSave (Counter = 2)
[0m[[1;31m INT-50h:ff125eb0 [0m] (00:01) [PM] DisablePowerSave (Counter = 3)
[0m[[1;31m INT-50h:ff125f20 [0m] (00:01) [PM] EnablePowerSave (Counter = 2)
[0m[[1;36m menu_task:ff0d14b4 [0m] (85:03) GUI_Control:-7 0x0
[0m[[1;36mGuiMainTask:ff403020 [0m] (04:02), refresh partly x=120 y=30 w=720 h=480
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m RscMgr:ff0d8ebc [0m] (80:02) srmEventDispatch: Current = 0, dwEventID = 0, dwParam = 15 S
[0m[[1;36m RscMgr:ff183af0 [0m] (80:01) AllocateMEM3 15 80
[0m[[1;36m RscMgr:ff17eb18 [0m] (80:01) ###### AllocateMemoryFromShootMemoryObject 10308
[0m[[1;36m RscMgr:ff17ebf4 [0m] (80:01) ###### 0 0x84303C 0x84303C
[0m[[1;36m RscMgr:ff17ebf4 [0m] (80:01) ###### 1 0x843044 0x842F44
[0m[[1;36m RscMgr:ff17ec1c [0m] (80:01) ###### 1 pMemoryUnit 0x842F44 0x86A60
[0m[[1;36m RscMgr:ff17ec78 [0m] (80:01) AllocatableSizeOfPackHeap 32505728, 16384, 16384
[0m[[1;36m RscMgr:ff17eee0 [0m] (80:01) !!AllocateMemory 16384
[0m[[1;36m RscMgr:ff17ee8c [0m] (80:01) AllocateMemoryFromShootMemoryObject 1 78675456 16384 0x000c47f8
[0m[[1;36m RscMgr:ff17eea8 [0m] (80:01) ###### VirtualXXXFreeSize1 78675456 1866960
[0m[[1;36m RscMgr:ff17f0f4 [0m] (80:01) ###### VirtualXXXFreeSize2 78659056 1866960
[0m[[1;36m RscMgr:ff17f108 [0m] (80:01) ###### !! AllocateMemoryFromShootMemoryObject hMemSuite 0xC47F8
[0m[[1;36m RscMgr:ff17f758 [0m] (80:01) ###### ShrinkMemoryToShootMemoryObject 0xC47F8 0x2844 0x4000
[0m[[1;36m RscMgr:ff17f38c [0m] (80:01) VirtualAllocFreeMemory 0xC47F8 0x84303C 0x0
[0m[[1;36m RscMgr:ff17f420 [0m] (80:01) ###### ChunkSize 16400
[0m[[1;36m RscMgr:ff17f44c [0m] (80:01) ###### VIRTUAL_FREE pMemoryUnit->VirtualFreeSize[0] 32505728
[0m[[1;36m RscMgr:ff17f478 [0m] (80:01) ###### +pMemoryObject->Virtual1stFreeSize 78675456
[0m[[1;36m RscMgr:ff17f664 [0m] (80:01) ###### +pMemoryObject->Virtual2ndFreeSize 1866960
[0m[[1;36m RscMgr:ff17f38c [0m] (80:01) VirtualAllocFreeMemory 0xC47F8 0x84303C 0x0
[0m[[1;36m RscMgr:ff17f420 [0m] (80:01) ###### ChunkSize 16400
[0m[[1;36m RscMgr:ff17f624 [0m] (80:01) ###### VIRTUAL_ALLOC pMemoryUnit->VirtualFreeSize[0] 32489328
[0m[[1;36m RscMgr:ff17f650 [0m] (80:01) ###### -pMemoryObject->Virtual1stFreeSize 78659056
[0m[[1;36m RscMgr:ff17f664 [0m] (80:01) ###### -pMemoryObject->Virtual2ndFreeSize 1866960
[0m[[1;36m RscMgr:ff1841fc [0m] (80:01), OK AllocDev[2] C47F8 2844 50 1 4CCBAC0 4CCBAC0 4CCFAD0
[0m[[1;36m RscMgr:ff0d90c4 [0m] (80:02) srmEventDispatch: Current = 0, dwEventID = 0, dwParam = 15 E
[0m[[1;36m menu_task:ff126194 [0m] register_interrupt(null, 0x34, 0xff12602c, 0x1)
[0m[[1;36m menu_task:ff11ae48 [0m] (00:16) [RTC] !! RTC_REGISTER_XST_BIT ERROR !!
[0m[[1;36m menu_task:ff5b129c [0m] (23:01) sdWriteBlk: st=2784, num=1, buf=0x402c8000
[0m[[1;36m menu_task:ff5b0f74 [0m] (23:01) sdDMAWriteBlk: st=2784, num=1
[0m[[1;36m menu_task:ff5b129c [0m] (23:01) sdWriteBlk: st=100, num=1, buf=0x40298000
[0m[[1;36m menu_task:ff5b0f74 [0m] (23:01) sdDMAWriteBlk: st=100, num=1
[0m[[1;36m menu_task:ff5b129c [0m] (23:01) sdWriteBlk: st=162, num=1, buf=0x40298000
[0m[[1;36m menu_task:ff5b0f74 [0m] (23:01) sdDMAWriteBlk: st=162, num=1
[0m[[1;36m menu_task:ff5b129c [0m] (23:01) sdWriteBlk: st=512, num=1, buf=0x40211200
[0m[[1;36m menu_task:ff5b0f74 [0m] (23:01) sdDMAWriteBlk: st=512, num=1
[0m[[1;36m menu_task:ff5b129c [0m] (23:01) sdWriteBlk: st=100, num=1, buf=0x40298000
[0m[[1;36m menu_task:ff5b0f74 [0m] (23:01) sdDMAWriteBlk: st=100, num=1
[0m[[1;36m menu_task:ff5b129c [0m] (23:01) sdWriteBlk: st=162, num=1, buf=0x40298000
[0m[[1;36m menu_task:ff5b0f74 [0m] (23:01) sdDMAWriteBlk: st=162, num=1
[0m[[1;36m menu_task:ff5b129c [0m] (23:01) sdWriteBlk: st=2784, num=1, buf=0x402c8000
[0m[[1;36m menu_task:ff5b0f74 [0m] (23:01) sdDMAWriteBlk: st=2784, num=1
[0m[[1;36m menu_task:ff0c2364 [0m] (8b:06) ASSERT : 0\9F\E5, Task = menu_task
[0m[[1;36m menu_task:ff0c2378 [0m] (8b:06) ASSERT : Line 0
[0m[[1;36m menu_task:ff0c238c [0m] (8b:06) ASSERT : m_pfAllocMovPlayWorkCBR
[0m[[1;36m PropMgr:ff0c2744 [0m] (8b:16) startupErrorRequestChangeCBR (0x1d)
[0m[[1;36m PropMgr:ff0c2794 [0m] (8b:16) startupErrorRequestChangeCBR : ErrorSend (101, ABORT)
[0m[[1;36m PropMgr:ff10f9b0 [0m] [1;34mmpu_send( 08 06 03 03 65 01 00 )
[0m[0m[[1;36m PropMgr:ff125eb0 [0m] (00:01) [PM] DisablePowerSave (Counter = 3)
[0m[[1;36m PropMgr:ff125f20 [0m] (00:01) [PM] EnablePowerSave (Counter = 2)
[0m[[1;31m INT-50h:ff125eb0 [0m] (00:01) [PM] DisablePowerSave (Counter = 3)
[0m[[1;31m INT-50h:ff125f20 [0m] (00:01) [PM] EnablePowerSave (Counter = 2)
[0m[[1;36m menu_task:ff0c23f4 [0m] (8b:16), ASSERT : Time 2000/1/1 0:7:56
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m DbgMgr:ff125eb0 [0m] (00:01) [PM] DisablePowerSave (Counter = 3)
(gdb)
int config_save_file(const char *filename)
{
int count = 0;
DebugMsg( DM_MAGIC, 3, "%s: saving to %s", __func__, filename );
#define MAX_SIZE 10240
char* msg = fio_malloc(MAX_SIZE);
msg[0] = '\0';
snprintf( msg, MAX_SIZE,
"# Magic Lantern %s (%s)\n"
"# Built on %s by %s\n",
build_version,
build_id,
build_date,
build_user
);
struct tm now;
LoadCalendarFromRTC( &now );
snprintf(msg + strlen(msg), MAX_SIZE - strlen(msg),
"# Configuration saved on %04d/%02d/%02d %02d:%02d:%02d\n",
now.tm_year + 1900,
now.tm_mon + 1,
now.tm_mday,
now.tm_hour,
now.tm_min,
now.tm_sec
);
for(struct config_var *var = _config_vars_start; var < _config_vars_end ; var++ )
{
if (*(int*)var->value == var->default_value)
continue;
snprintf(msg + strlen(msg), MAX_SIZE - strlen(msg) - 1,
"%s = %d\r\n",
var->name,
*(int*) var->value
);
count++;
}
FILE * file = FIO_CreateFile( filename );
if(!file)
{
//fio_free(msg);
return -1;
}
FIO_WriteFile(file, msg, strlen(msg));
FIO_CloseFile( file );
//fio_free(msg)
return count;
}
[0m[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m guess_mem:00c818f8 [0m] [1;34mtask_create(stack_try, prio=1e, stack=82800, entry=c813a4, arg=82800)
[0m[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m guess_mem:00c818f8 [0m] [1;34mtask_create(stack_try, prio=1e, stack=82c00, entry=c813a4, arg=82c00)
[0m[0m[[1;36m RscMgr:ff0d8ebc [0m] (80:02) srmEventDispatch: Current = 0, dwEventID = 0, dwParam = 15 S
[0m[[1;36m RscMgr:ff183af0 [0m] (80:01) AllocateMEM3 15 80
[0m[[1;36m RscMgr:ff17eb18 [0m] (80:01) ###### AllocateMemoryFromShootMemoryObject 8388608
[0m[[1;36m RscMgr:ff17ebf4 [0m] (80:01) ###### 0 0x84305C 0x84305C
[0m[[1;36m RscMgr:ff17ebf4 [0m] (80:01) ###### 1 0x843064 0x842F64
[0m[[1;36m RscMgr:ff17ec1c [0m] (80:01) ###### 1 pMemoryUnit 0x842F64 0x86A60
[0m[[1;36m RscMgr:ff17ec78 [0m] (80:01) AllocatableSizeOfPackHeap 32505728, 16384, 8388608
[0m[[1;36m RscMgr:ff17eee0 [0m] (80:01) !!AllocateMemory 8388608
[0m[[1;36m RscMgr:ff17ee8c [0m] (80:01) AllocateMemoryFromShootMemoryObject 1 78675456 8388608 0x000c48e8
[0m[[1;36m RscMgr:ff17eea8 [0m] (80:01) ###### VirtualXXXFreeSize1 78675456 1866960
[0m[[1;36m RscMgr:ff17f0f4 [0m] (80:01) ###### VirtualXXXFreeSize2 70286832 1866960
[0m[[1;36m RscMgr:ff17f108 [0m] (80:01) ###### !! AllocateMemoryFromShootMemoryObject hMemSuite 0xC48E8
[0m[[1;36m RscMgr:ff17f758 [0m] (80:01) ###### ShrinkMemoryToShootMemoryObject 0xC48E8 0x800000 0x800000
[0m[[1;36m RscMgr:ff1841fc [0m] (80:01), OK AllocDev[2] C48E8 800000 50 1 44CFAC0 44CFAC0 4CCFAD0
[0m[[1;36m RscMgr:ff0d90c4 [0m] (80:02) srmEventDispatch: Current = 0, dwEventID = 0, dwParam = 15 E
[0m[[1;36m RscMgr:ff0d8ebc [0m] (80:02) srmEventDispatch: Current = 0, dwEventID = 0, dwParam = 15 S
[0m[[1;36m RscMgr:ff183af0 [0m] (80:01) AllocateMEM3 15 80
[0m[[1;36m RscMgr:ff17eb18 [0m] (80:01) ###### AllocateMemoryFromShootMemoryObject 4194304
[0m[[1;36m RscMgr:ff17ebf4 [0m] (80:01) ###### 0 0x84305C 0x842F64
[0m[[1;36m RscMgr:ff17ec1c [0m] (80:01) ###### 0 pMemoryUnit 0x842F64 0x86A60
[0m[[1;36m RscMgr:ff17ec78 [0m] (80:01) AllocatableSizeOfPackHeap 24117104, 16384, 4194304
[0m[[1;36m RscMgr:ff17eee0 [0m] (80:01) !!AllocateMemory 4194304
[0m[[1;36m RscMgr:ff17ee8c [0m] (80:01) AllocateMemoryFromShootMemoryObject 1 70286832 4194304 0x000c4948
[0m[[1;36m RscMgr:ff17eea8 [0m] (80:01) ###### VirtualXXXFreeSize1 70286832 1866960
[0m[[1;36m RscMgr:ff17f0f4 [0m] (80:01) ###### VirtualXXXFreeSize2 66092512 1866960
[0m[[1;36m RscMgr:ff17f108 [0m] (80:01) ###### !! AllocateMemoryFromShootMemoryObject hMemSuite 0xC4948
[0m[[1;36m RscMgr:ff17f758 [0m] (80:01) ###### ShrinkMemoryToShootMemoryObject 0xC4948 0x400000 0x400000
[0m[[1;36m RscMgr:ff1841fc [0m] (80:01), OK AllocDev[2] C4948 400000 50 1 40CFAB0 40CFAB0 4CCFAD0
[0m[[1;36m RscMgr:ff0d90c4 [0m] (80:02) srmEventDispatch: Current = 0, dwEventID = 0, dwParam = 15 E
[0m[[1;36m guess_mem:ff0c1d60 [0m] (8b:16) ###exceptionhandlercbr 0x0 0
[0m[[1;36m guess_mem:ff0c1e90 [0m] (8b:16) #####exceptionhandlercbr 0x0
[0m[[1;36m guess_mem:ff0c1ea0 [0m] (8b:03) < Error Exception>
[0m[[1;36m guess_mem:ff0c1eb4 [0m] (8b:03) TYPE : 4
[0m[[1;36m guess_mem:ff0c1ec8 [0m] (8b:03) ISR : 0
[0m[[1;36m guess_mem:ff0c1edc [0m] (8b:03) TASK IDSR : 51445849
[0m[[1;36m guess_mem:ff0c1ef0 [0m] (8b:03) TASK Name : guess_mem
[0m[[1;36m guess_mem:ff0c1f04 [0m] (8b:03) R 0 : c4948
[0m[[1;36m guess_mem:ff0c1f18 [0m] (8b:03) R 1 : 400000
[0m[[1;36m guess_mem:ff0c1f2c [0m] (8b:03) R 2 : c48e8
[0m[[1;36m guess_mem:ff0c1f40 [0m] (8b:03) R 3 : 0
[0m[[1;36m guess_mem:ff0c1f54 [0m] (8b:03) R 4 : 0
[0m[[1;36m guess_mem:ff0c1f68 [0m] (8b:03) R 5 : cbe570
[0m[[1;36m guess_mem:ff0c1f7c [0m] (8b:03) R 6 : 400000
[0m[[1;36m guess_mem:ff0c1f90 [0m] (8b:03) R 7 : c8c944
[0m[[1;36m guess_mem:ff0c1fa4 [0m] (8b:03) R 8 : 0
[0m[[1;36m guess_mem:ff0c1fb8 [0m] (8b:03) R 9 : 19980218
[0m[[1;36m guess_mem:ff0c1fcc [0m] (8b:03) R10 : 19980218
[0m[[1;36m guess_mem:ff0c1fe0 [0m] (8b:03) R11 : 19980218
[0m[[1;36m guess_mem:ff0c1ff4 [0m] (8b:03) R12 : 0
[0m[[1;36m guess_mem:ff0c2008 [0m] (8b:03) R13 : 1603c
[0m[[1;36m guess_mem:ff0c2244 [0m] (8b:03) R14 : 0
[0m[[1;36m guess_mem:ff0c2258 [0m] (8b:03) PC : 0
[0m[[1;36m guess_mem:ff0c226c [0m] (8b:03) CPSR : 20000093
[0m[[1;36m guess_mem:ff0c22b0 [0m] (8b:16), Exception : Time 2000/1/1 0:0:31
[0m[[1;36m CtrlSrv:ff44ff18 [0m] (83:02) DlgShootOlc.c LOCAL_DIALOG_REFRESH
[0m[[1;36m DbgMgr:ff125eb0 [0m] (00:01) [PM] DisablePowerSave (Counter = 3)
I'm limited by hardware for compiling (Virtualbox: VT-x not compatible with my CPU).
Maybe someone can tell me what I have to do to get the latest ML running on my camera.
#!/bin/sh
cd
curl -OL https://launchpad.net/gcc-arm-embedded/4.8/4.8-2013-q4-major/+download/gcc-arm-none-eabi-4_8-2013q4-20131204-linux.tar.bz2
bzip2 -d gcc-arm-none-eabi-4_8-2013q4-20131204-linux.tar.bz2
tar -x -f gcc-arm-none-eabi-4_8-2013q4-20131204-linux.tar
curl -OL http://prdownloads.sourceforge.net/docutils/docutils-0.12.tar.gz
gzip -d docutils-0.12.tar.gz
tar -x -f docutils-0.12.tar
cd docutils-0.12
python setup.py install --prefix=~/.local
cd
export PATH="$HOME/.local/bin:$PATH"
echo "export PATH=\"\$HOME/.local/bin:\$PATH\"" >> .bash_profile
cp .local/bin/rst2html.py .local/bin/rst2html
cd workspace
hg clone -r unified https://bitbucket.org/hudson/magic-lantern
cd magic-lantern
hg clone -u 1200D https://bitbucket.org/hudson/magic-lantern/
cd magic-lantern/platform/1200d.101
[ MKDIR ] ML directory structure...
[ AS ] entry.o
/bin/sh: 1: /home/sergio/gcc-arm-none-eabi-4_8-2013q4/bin/arm-none-eabi-gcc-4.8.3: not found
../../Makefile.filerules:31: recipe for target 'entry.o' failed
make: *** [entry.o] Error 127
ls -l /home/sergio/gcc-arm-none-eabi-4_8-2013q4/bin/arm-none-eabi-gcc-4.8.3
-rwxr-xr-x 2 root root 621860 Dec 3 2013 arm-none-eabi-gcc-4.8.3
Heres the build of latest, but its new port, so play safe. Any weird things happen, turn off camera and take out battery and restart and report EXACT procedure that caused it to happen in as much detail as possible.
[Pass] f = FIO_CreateFile("test.dat") => 0x3
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
FIO_CloseFile(f)
[Pass] FIO_GetFileSize("test.dat", &size) => 0x0
[Pass] size => 0x20000
[Pass] p = (void*)_alloc_dma_memory(0x20000) => 0x4099737c
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x3
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
FIO_CloseFile(f)
_free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x422040a4
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x3
[Pass] FIO_SeekSkipFile(f, 0, SEEK_END) => 0x82000000
[Pass] FIO_WriteFile(f, buf, 0x10) => 0x10
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_END) => 0x81fffff0
[Pass] FIO_WriteFile(f, buf, 0x30) => 0x30
[Pass] FIO_SeekSkipFile(f, 0x20, SEEK_SET) => 0x20
[Pass] FIO_SeekSkipFile(f, 0x30, SEEK_CUR) => 0x50
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_CUR) => 0x30
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000020
[Pass] FIO_RemoveFile("test.dat") => 0x0
[Pass] SetTimerAfter(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x5c5a
msleep(900)
[Pass] timer_func => 0x0
msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x4
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x5cf0
msleep(400)
CancelTimer(timer)
[Pass] timer_func => 0x0
msleep(1500)
[Pass] timer_func => 0x0
[Pass] SetHPTimerAfterNow(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetHPTimerAfterNow(100000, timer_cbr, overrun_cbr, 0) => 0x2a0
msleep(90)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x163
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0x119
[Pass] ABS((get_us_clock_value() - t0) - 110000) => 0xa0
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x2a2
msleep(80)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x3
msleep(80)
[Pass] timer_func => 0x3
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 300000) => 0x14d
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x108
[Pass] ABS((get_us_clock_value() - t0) - 310000) => 0xa1
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x16bc90
[Pass] msg => 'hi there'
[Pass] snprintf(a, sizeof(a), "foo") => 0x3
[Pass] snprintf(b, sizeof(b), "foo") => 0x3
[Pass] strcmp(a, b) => 0x0
[Pass] snprintf(a, sizeof(a), "bar") => 0x3
[Pass] snprintf(b, sizeof(b), "baz") => 0x3
[Pass] strcmp(a, b) => 0xfffffff8
[Pass] snprintf(a, sizeof(a), "Display") => 0x7
[Pass] snprintf(b, sizeof(b), "Defishing") => 0x9
[Pass] strcmp(a, b) => 0x4
[Pass] snprintf(buf, 3, "%d", 1234) => 0x2
[Pass] buf => '12'
[Pass] memcpy(foo, bar, 6) => 0x16bc20
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x16bc00
[Pass] bar => '*****hjkl;'
bzero32(bar + 5, 5)
[Pass] bar => '****'
t0 = *(uint32_t*)0xC0242014 => 0xcf5d9
msleep(250)
t1 = *(uint32_t*)0xC0242014 => 0xba92
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x4
LoadCalendarFromRTC( &now )
s0 = now.tm_sec => 0x2c
Date/time: 2016/07/24 23:49:44
msleep(1500)
LoadCalendarFromRTC( &now )
s1 = now.tm_sec => 0x2d
[Pass] MOD(s1-s0, 60) => 0x1
[Pass] MOD(s1-s0, 60) => 0x1
m0 = MALLOC_FREE_MEMORY => 0x3e168
[Pass] p = (void*)_malloc(50*1024) => 0xc6db8
[Pass] CACHEABLE(p) => 0xc6db8
m1 = MALLOC_FREE_MEMORY => 0x31958
_free(p)
m2 = MALLOC_FREE_MEMORY => 0x3e168
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m0 = GetFreeMemForAllocateMemory() => 0x144458
[Pass] p = (void*)_AllocateMemory(256*1024) => 0xba5b38
[Pass] CACHEABLE(p) => 0xba5b38
m1 = GetFreeMemForAllocateMemory() => 0x104448
_FreeMemory(p)
m2 = GetFreeMemForAllocateMemory() => 0x144458
[Pass] ABS((m0-m1) - 256*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m01 = MALLOC_FREE_MEMORY => 0x3e168
m02 = GetFreeMemForAllocateMemory() => 0x144458
[Pass] p = (void*)_alloc_dma_memory(256*1024) => 0x40ba5b78
[Pass] UNCACHEABLE(p) => 0x40ba5b78
[Pass] CACHEABLE(p) => 0xba5b78
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40ba5b78
_free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(24*1024*1024) => 0x42204084
[Pass] UNCACHEABLE(p) => 0x42204084
_shoot_free(p)
m11 = MALLOC_FREE_MEMORY => 0x3e168
m12 = GetFreeMemForAllocateMemory() => 0x144458
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(24*1024*1024) => 0xc5608
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1800000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc5630
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1800000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42204080
[Pass] UNCACHEABLE(p) => 0x42204080
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xc5608
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1df8000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc5630
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1df8000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42204080
[Pass] UNCACHEABLE(p) => 0x42204080
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(64*1024*1024) => 0xc5608
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x4
[Pass] suite->size => 0x4000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc5630
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1df8000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42204080
[Pass] UNCACHEABLE(p) => 0x42204080
chunk = GetNextMemoryChunk(suite, chunk) => 0xc5690
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x29fc000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc56c8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2a90000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x49f68100
[Pass] UNCACHEABLE(p) => 0x49f68100
chunk = GetNextMemoryChunk(suite, chunk) => 0xc5700
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x48000070
[Pass] UNCACHEABLE(p) => 0x48000070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4000000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xc5608
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x4
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc5630
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1df8000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42204080
[Pass] UNCACHEABLE(p) => 0x42204080
chunk = GetNextMemoryChunk(suite, chunk) => 0xc5690
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x29fc000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc56c8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2a90000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x49f68100
[Pass] UNCACHEABLE(p) => 0x49f68100
chunk = GetNextMemoryChunk(suite, chunk) => 0xc5700
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x48000070
[Pass] UNCACHEABLE(p) => 0x48000070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4700000
shoot_free_suite(suite); suite = 0; chunk = 0;
EngDrvOut(LCD_Palette[0], 0x1234)
[Pass] shamem_read(LCD_Palette[0]) => 0x1234
call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
call("TurnOffDisplay")
[Pass] DISPLAY_IS_ON => 0x0
call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
SetGUIRequestMode(1); msleep(1000);
[Pass] CURRENT_DIALOG_MAYBE => 0x1
SetGUIRequestMode(2); msleep(1000);
[Pass] CURRENT_DIALOG_MAYBE => 0x2
SetGUIRequestMode(0); msleep(1000);
[Pass] CURRENT_DIALOG_MAYBE => 0x0
[Pass] display_idle() => 0x1
GUI_Control(BGMT_PLAY, 0, 0, 0); msleep(1000);
[Pass] PLAY_MODE => 0x1
[Pass] MENU_MODE => 0x0
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(1000);
[Pass] MENU_MODE => 0x1
[Pass] PLAY_MODE => 0x0
[FAIL] MEM(dialog->type) => 0x6e4944
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[Pass] MENU_MODE => 0x0
[Pass] PLAY_MODE => 0x0
task_create("test", 0x1c, 0x1000, test_task, 0) => 0x78200c0
[Pass] test_task_created => 0x1
[Pass] get_task_name_from_id(get_current_task()) => 'run_test'
[Pass] task_max => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0x7840096
[Pass] msg_queue_post(mq, 0x1234567) => 0x0
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x0
[Pass] m => 0x1234567
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x9
[Pass] sem = sem ? sem : create_named_semaphore("test", 1) => 0x786031c
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] take_semaphore(sem, 500) => 0x9
[Pass] give_semaphore(sem) => 0x0
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] give_semaphore(sem) => 0x0
[Pass] rlock = rlock ? rlock : CreateRecursiveLock(0) => 0x788008e
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0xf
SW1(1,100)
[FAIL] HALFSHUTTER_PRESSED => 0x0
SW1(0,100)
[Pass] HALFSHUTTER_PRESSED => 0x0
ASSERT: FALSE
at ASIF\ASIF.c:486, task ASIF
lv:0 mode:3
Magic Lantern version : Nightly.2016Jul24.1200D101
Mercurial changeset : d0ffefa7d840+ (1200D) tip
Built on 2016-07-24 10:15:12 UTC by mathew@mathew-VirtualBox-15.
Free Memory : 247K + 1274K
Maybe EXT means external mic? The 1200D can only record via the internal mic.Maybe, but the VU meter works fine, so internal mic is measured
should only show 1 meter though as far as i know for mono.
[Pass] f = FIO_CreateFile("test.dat") => 0x3
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
FIO_CloseFile(f)
[Pass] FIO_GetFileSize("test.dat", &size) => 0x0
[Pass] size => 0x20000
[Pass] p = (void*)_alloc_dma_memory(0x20000) => 0x40997148
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x3
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
FIO_CloseFile(f)
_free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x422040a4
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x3
[Pass] FIO_SeekSkipFile(f, 0, SEEK_END) => 0x82000000
[Pass] FIO_WriteFile(f, buf, 0x10) => 0x10
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_END) => 0x81fffff0
[Pass] FIO_WriteFile(f, buf, 0x30) => 0x30
[Pass] FIO_SeekSkipFile(f, 0x20, SEEK_SET) => 0x20
[Pass] FIO_SeekSkipFile(f, 0x30, SEEK_CUR) => 0x50
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_CUR) => 0x30
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000020
[Pass] FIO_RemoveFile("test.dat") => 0x0
[Pass] SetTimerAfter(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x2bd2
msleep(900)
[Pass] timer_func => 0x0
msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x7
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x2bf8
msleep(400)
CancelTimer(timer)
[Pass] timer_func => 0x0
msleep(1500)
[Pass] timer_func => 0x0
[Pass] SetHPTimerAfterNow(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetHPTimerAfterNow(100000, timer_cbr, overrun_cbr, 0) => 0x258
msleep(90)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x158
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0x113
[FAIL] ABS((get_us_clock_value() - t0) - 110000) => 0x3767
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x25a
msleep(80)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x3
msleep(80)
[Pass] timer_func => 0x3
msleep(20)
[Pass] timer_func => 0x1
[FAIL] ABS(DeltaT(timer_time, t0) - 300000) => 0x3847
[FAIL] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x3803
[FAIL] ABS((get_us_clock_value() - t0) - 310000) => 0x2925
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x16bc90
[Pass] msg => 'hi there'
[Pass] snprintf(a, sizeof(a), "foo") => 0x3
[Pass] snprintf(b, sizeof(b), "foo") => 0x3
[Pass] strcmp(a, b) => 0x0
[Pass] snprintf(a, sizeof(a), "bar") => 0x3
[Pass] snprintf(b, sizeof(b), "baz") => 0x3
[Pass] strcmp(a, b) => 0xfffffff8
[Pass] snprintf(a, sizeof(a), "Display") => 0x7
[Pass] snprintf(b, sizeof(b), "Defishing") => 0x9
[Pass] strcmp(a, b) => 0x4
[Pass] snprintf(buf, 3, "%d", 1234) => 0x2
[Pass] buf => '12'
[Pass] memcpy(foo, bar, 6) => 0x16bc20
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x16bc00
[Pass] bar => '*****hjkl;'
bzero32(bar + 5, 5)
[Pass] bar => '****'
t0 = *(uint32_t*)0xC0242014 => 0x7b4ab
msleep(250)
t1 = *(uint32_t*)0xC0242014 => 0xb78a9
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x4
LoadCalendarFromRTC( &now )
s0 = now.tm_sec => 0x37
Date/time: 2016/07/25 22:39:55
msleep(1500)
LoadCalendarFromRTC( &now )
s1 = now.tm_sec => 0x38
[Pass] MOD(s1-s0, 60) => 0x1
[Pass] MOD(s1-s0, 60) => 0x1
m0 = MALLOC_FREE_MEMORY => 0x3df10
[Pass] p = (void*)_malloc(50*1024) => 0xc6e08
[Pass] CACHEABLE(p) => 0xc6e08
m1 = MALLOC_FREE_MEMORY => 0x31700
_free(p)
m2 = MALLOC_FREE_MEMORY => 0x3df10
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m0 = GetFreeMemForAllocateMemory() => 0x1443c4
[Pass] p = (void*)_AllocateMemory(256*1024) => 0xba5864
[Pass] CACHEABLE(p) => 0xba5864
m1 = GetFreeMemForAllocateMemory() => 0x1043b4
_FreeMemory(p)
m2 = GetFreeMemForAllocateMemory() => 0x1443c4
[Pass] ABS((m0-m1) - 256*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m01 = MALLOC_FREE_MEMORY => 0x3df10
m02 = GetFreeMemForAllocateMemory() => 0x1443c4
[Pass] p = (void*)_alloc_dma_memory(256*1024) => 0x40ba58a4
[Pass] UNCACHEABLE(p) => 0x40ba58a4
[Pass] CACHEABLE(p) => 0xba58a4
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40ba58a4
_free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(24*1024*1024) => 0x4229c0b4
[Pass] UNCACHEABLE(p) => 0x4229c0b4
_shoot_free(p)
m11 = MALLOC_FREE_MEMORY => 0x3df10
m12 = GetFreeMemForAllocateMemory() => 0x1443c4
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(24*1024*1024) => 0xc5860
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1800000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc5888
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1800000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4229c0b0
[Pass] UNCACHEABLE(p) => 0x4229c0b0
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xc5860
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1d60000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc5888
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1d60000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4229c0b0
[Pass] UNCACHEABLE(p) => 0x4229c0b0
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(64*1024*1024) => 0xc5860
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x4
[Pass] suite->size => 0x4000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc5888
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d60000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4229c0b0
[Pass] UNCACHEABLE(p) => 0x4229c0b0
chunk = GetNextMemoryChunk(suite, chunk) => 0xc58e8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2964000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc5920
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x29f8000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
chunk = GetNextMemoryChunk(suite, chunk) => 0xc5958
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4000000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xc5860
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x4
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc5888
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d60000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4229c0b0
[Pass] UNCACHEABLE(p) => 0x4229c0b0
chunk = GetNextMemoryChunk(suite, chunk) => 0xc58e8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2964000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc5920
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x29f8000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
chunk = GetNextMemoryChunk(suite, chunk) => 0xc5958
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4700000
shoot_free_suite(suite); suite = 0; chunk = 0;
EngDrvOut(LCD_Palette[0], 0x1234)
[Pass] shamem_read(LCD_Palette[0]) => 0x1234
call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
call("TurnOffDisplay")
[Pass] DISPLAY_IS_ON => 0x0
call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
SetGUIRequestMode(1); msleep(1000);
[Pass] CURRENT_DIALOG_MAYBE => 0x1
SetGUIRequestMode(2); msleep(1000);
[Pass] CURRENT_DIALOG_MAYBE => 0x2
SetGUIRequestMode(0); msleep(1000);
[Pass] CURRENT_DIALOG_MAYBE => 0x0
[Pass] display_idle() => 0x1
GUI_Control(BGMT_PLAY, 0, 0, 0); msleep(1000);
[Pass] PLAY_MODE => 0x1
[Pass] MENU_MODE => 0x0
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(1000);
[Pass] MENU_MODE => 0x1
[Pass] PLAY_MODE => 0x0
[FAIL] MEM(dialog->type) => 0x6e4944
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[Pass] MENU_MODE => 0x0
[Pass] PLAY_MODE => 0x0
task_create("test", 0x1c, 0x1000, test_task, 0) => 0x70200c0
[Pass] test_task_created => 0x1
[Pass] get_task_name_from_id(get_current_task()) => 'run_test'
[Pass] task_max => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0x7040096
[Pass] msg_queue_post(mq, 0x1234567) => 0x0
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x0
[Pass] m => 0x1234567
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x9
[Pass] sem = sem ? sem : create_named_semaphore("test", 1) => 0x706031e
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] take_semaphore(sem, 500) => 0x9
[Pass] give_semaphore(sem) => 0x0
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] give_semaphore(sem) => 0x0
[Pass] rlock = rlock ? rlock : CreateRecursiveLock(0) => 0x708005a
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0xf
SW1(1,100)
[FAIL] HALFSHUTTER_PRESSED => 0x0
SW1(0,100)
[Pass] HALFSHUTTER_PRESSED => 0x0
ASSERT: FALSE
at ASIF\ASIF.c:486, task ASIF
lv:0 mode:3
Magic Lantern version : Nightly.2016Jul25.1200D101
Mercurial changeset : a1fa773fa8d7+ (1200D)
Built on 2016-07-25 13:19:30 UTC by mathew@mathew-VirtualBox-15.
Free Memory : 238K + 1296K
[FAIL] MEM(dialog->type) => 0x6e4944
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[FAIL] HALFSHUTTER_PRESSED => 0x0
SW1(0,100)
Btw... is the clock always shown in UTC? In canon menu it is set to "Paris" (UTC+1) with DST enabled. (Overall +2 hours)
Does magic zoom work in the build with the timer test for anyone?
http://www.magiclantern.fm/forum/index.php?topic=12627.msg170298#msg170298 (http://www.magiclantern.fm/forum/index.php?topic=12627.msg170298#msg170298)
Figured, but does anyone know if it did anything for the clock in this new build with stub fix for Alex?
[FAIL] MEM(dialog->type) => 0x6e4944
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[FAIL] HALFSHUTTER_PRESSED => 0x0
SW1(0,100)
[FAIL] MEM(dialog->type) => 0x6e4944
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[FAIL] HALFSHUTTER_PRESSED => 0x0
SW1(0,100)
In my lastest vídeo I showed that when in Manual mode in LiveView you whant to chage mode the imagen freezes and camera freezes, batery remove is requeired to boot again, can you guys verify this in your cameras?
Manual Exposure Movie Mode
61 = 1010006/75006098/25500301
61 = 3010006/75006098/25500101
4c
Auto Exposure Movie Mode
61 = 3010040/0/0
61 = 1010040/0/0
4c
#define BGMT_AV (event->type == 0 && event->param == 0x61 && ( \
(is_movie_mode() && event->arg == 0xa) || \
(shooting_mode == SHOOTMODE_P && event->arg == 0xa) || \
(shooting_mode == SHOOTMODE_ADEP && event->arg == 0xa) || \
(shooting_mode == SHOOTMODE_AV && event->arg == 0xf) || \
(shooting_mode == SHOOTMODE_M && event->arg == 0xe) || \
(shooting_mode == SHOOTMODE_TV && event->arg == 0x10)) )
[5] raw_rec_task: NULL PTR (4,e1a00000)
pc= c5c88 lr= ceb98c stack=163d68+0x1000
entry=badfc8(0)
e1a00000 350014 3b28281c 100c031
d33600 e1a00000 e59ff010 e59ff010
Magic Lantern version : Nightly.2016Jul28.1200D101
Mercurial changeset : a1fa773fa8d7+ (1200D)
Built on 2016-07-29 01:42:29 UTC by mathew@mathew-VirtualBox-15.
Free Memory : 155K + 1067K
Using my CZ Distagon 28/2 (C/Y mount + adapter + AF chip) I have ~ -3 stops at LV screen compared to the actual photo, so zebras, histogram and image references are useless. That's for photo, Movie mode (manual, same parameters) LV looks correct.
I updated build, can you download it once more and see if you still get raw_error for full res silent picture?Same error :-\
And wait, this was from simple???No, it's from full-res. With simple parameter it seems that there is no problem.
Ok, updated it, can you check again, also check if the overlay for Histogram and focus peaking in Photo Review mode are aligned since that is what this test was really for?
static void run_test()
{
msleep(2000);
void debug_intercept();
debug_intercept();
info_led_on();
void* job = (void*) call("FA_CreateTestImage");
call("FA_CaptureTestImage", job);
call("FA_DeleteTestImage", job);
info_led_off();
debug_intercept();
}
Hey guys,
First off, THANK YOU for all the work in porting this.
However, I cant seem to get it to install. I've downloaded you most stable build from you link, formatted my card in camera, made sure firmware was up to date, put ML files on sd, but when I go to the update firmware screen to install ML, it tells me there is no FW on the card.
Using a lexar class 10 64 gb if it helps
See reply #156
ok so I ran the 1200BOOT.FIR and it gave me a rom dump msg over my last picture and then a ":)"
But I cant find a ML menu. Tried the ml-setup.fir from a nightly build and it froze my camera saying there was no boot/firmware file
No problem here (Germany).Thanks Walter, Today i got download the file. Maybe it was a temporary problem.
Are you able to access this directory (https://bitbucket.org/mk11174/1200d_new/downloads/)?
2. I couldn't find my way to get into ML from movie mode. Any tips? I remember reading something baout this thru the thread but don't wanna go reread all 13 pages.
EDIT: Just so that I get a better grasp of how ML works. Well at least this edition we got here. If I go to firmware update and try to uninstall it the way ML instructions go, I still get the Enable Boot disk :) etc. No way to disable it. Is this a type of a ML install that doesn't set boot disk enabled on the Camera? Also, will using a different SD card result in totally stock settings? Including the boot times. ML takes a little longer to boot. Does the time reduce if you're using non ML SD card?
If you format the card it removes it. I've switched cards before and it runs normally like if ML was never installed it seems to me.You must to format it in the PC, the camera will left the ML files
Do we have intervalomter working yet?Work for me.
Sent from my E6653 using Tapatalk
You must to format it in the PC, the camera will left the ML files
Do we have intervalomter working yet?
Sent from my E6653 using Tapatalk
Format card in cam.
Retry EOScard.
Delete contents from card (autoexec.bin, *.FIR, ML directory).
Copy extracted zip content (for 1200D) to card.
If you have another card (32 GB or less) you should go with this one.
Found on another forum that it was my built in sd reader the was not reading the vbr. used a usb reader and it worked great.
Thanks again!
where is it in page 13, i have the same problem and I don't speak English well... thanks
Yo guys.Look at page 32 or post #319 from ballistichugs
I im trying my best to install magic lantern on my canon 1200d but im not been able to do it. Can you please tell me exact process with download links?
Sent from my Moto G 2014 using Tapatalk
For everyone having trouble installing Magic Lantern on the 1200D, I will do my best to try and explain how I installed it again.Bro. Im running the script with cygwin. Can you give me the exact commands please.
I Unchecked low format and formatted the card on the camera and started from scratch to hopefully help some people, so here goes nothing.
Step 1: Formatted the card.
Step 2: Put ML files from latest build (July 30th). {ML+autoexec.bin}
Step 3: I Added the 1200BOOT.fir file to the main directory of the card.
(https://www.magiclantern.fm/forum/proxy.php?request=http%3A%2F%2Fi.imgur.com%2FLrRACY6.png&hash=4cd94c2ca9ddd20d48d31a6c810f765a)
Step 4: I ran the update from the camera without running the script that makes the card bootable and I got the ":)" error. (https://www.magiclantern.fm/forum/proxy.php?request=http%3A%2F%2Fi.imgur.com%2FCqGksDX.jpg&hash=181a70a9f9ac5a3e2277ba680b595581)
Step 5: I then put the card in my chromebook without adding/removing any files and I ran the script that makes the card bootable.
(https://www.magiclantern.fm/forum/proxy.php?request=http%3A%2F%2Fi.imgur.com%2FI4QLqsC.png&hash=82af511fe034fb5b17887fcaae135596)
Step 6: I ejected my card and inserted into my camera and as soon as I turned it on It booted up showing the size of the card in the bottom right of the screen. If you hit the delete button the menu should show.
(https://www.magiclantern.fm/forum/proxy.php?request=http%3A%2F%2Fi.imgur.com%2Fy3oxdP7.jpg&hash=3d1bdca308b4dd623d72f476ba92c942)
Here's a link for the make_bootable.sh file I used: make_bootable.sh (http://www119.zippyshare.com/v/IWapuU5E/file.html)
You can also download it from: https://bitbucket.org/hudson/magic-lantern/src/tip/contrib/make-bootable/ (https://bitbucket.org/hudson/magic-lantern/src/tip/contrib/make-bootable/)
July 30th Build: https://bitbucket.org/mk11174/1200d_new/downloads/Latest_Build_July_30.zip (https://bitbucket.org/mk11174/1200d_new/downloads/Latest_Build_July_30.zip)
I hope this helps guys I tried my best to explain it and recreate the problem y'all are having. If y'all have any questions or problems let me know.
Don't skip any steps and run the script with sudo.
Ok guys. Ill try it out again today in the evening. Thankyou all.
Sent from my Moto G 2014 using Tapatalk
Yea... I'm not sure if the script will work on cygwin... You could try running a virtual linux machine maybe... or just try the EOSCard again.Thanks bro. I tried it today again and it worked *enjoying in joy* the. Intervalomenter is quite awesome. Thanks to all of you guys. Also, if anyone of you guys made an updated version i would really be happy to test it. Good day guys. [emoji111] [emoji41]
Having the same button for aperture and ML menu is frustrating, you always got to go to the ML menu to control aperture in movie mode. In M mode you can press AV and use the main dial for controlling aperture, but if you just click once in AV without dialing you enter ML menu.For me, I can't seem to access the ML menu while in Movie mode. The Av button does not send me into ML settings.
Also with the kit lens I can´t control aperture in the ML menu. Others working fine. Is it because of variable aperture?
For me, I can't seem to access the ML menu while in Movie mode. The Av button does not send me into ML settings.
According to Camera Memory Speed (http://www.cameramemoryspeed.com/reviews/sd-cards/sony-32gb-sdhc-memory-card/) this card has performance issues with some (not all!) Canon DSLRs. I don't know if 1200D is affected or not.Did you? I got this one actually: http://www.cameramemoryspeed.com/reviews/sd-cards/sony-95mbs-32gb-sdhc-memory-card
Whatever card you use you want to have it formatted with ExFAT file system.
You tried very low resolutions? Card is formatted using ExFAT?Yes i do, but i want to film at least HD(1280x720).
Personally have not had much success with .raw video on ML with my 1200d..only get a few frames then recording fails. Be interested to see how others fair.Any interesting option that i can try? i mean, could you recommend me any option, i'm new with ML.
Sent from my E6653 using Tapatalk
Did you? I got this one actually: http://www.cameramemoryspeed.com/reviews/sd-cards/sony-95mbs-32gb-sdhc-memory-cardHave a play around with the intervalometer, silent pics and fps override. Has been fun for me.
Its formated Ex-FAT, but i dont know which clusher size i need to use to optimize the SDCard.
Yes i do, but i want to film at least HD(1280x720).
Any interesting option that i can try? i mean, could you recommend me any option, i'm new with ML.
Have a play around with the intervalometer, silent pics and fps override. Has been fun for me.
Sent from my E6653 using Tapatalk
How its works silent pics?The camera pulls the image from the sensor rather than actuate the shutter. Have a look at the user guide / wiki for the best explanation. So far I've only gotten results from simple. High res look fine, for me, in camera however have a pink cast when I bring them up on computer [emoji15]
Has anybody tried editing dual iso files?
Started: 11.10.2016 12:14:53
Input folder is C:\cr2hdr\Neuer Ordner
Searching for .CR2 files
Queued "C:\cr2hdr\cr2hdr.exe" --compress "IMG_6330.CR2"
Converting Dual ISO .CR2 files
Executing: "C:\cr2hdr\cr2hdr.exe" --compress "IMG_6330.CR2"
No DNG files created. Check script options and log.
'------------------------------------------------------------------
'last update: 3/30/2014
cr2hdrpath="C:\cr2hdr\" 'ends with a slash \
cr2hdrexe="cr2hdr.exe"
cr2hdrargs="--compress"
exiftoolpath="C:\cr2hdr\exiftool\" 'ends with a slash \
inputfolder="C:\pictures\" 'dialog will start at this folder if set (ends with a slash \)
dualisocr2dir="Dual ISO CR2"
regularcr2dir="Regular CR2"
dngoutputdir="Dual ISO DNG"
organize=true 'sort files into subdirectories when done processing
correcttint=false
maxprocs=4 'Number of simultaneous processes
windowtype=7
'0 Hide the window and activate another window.
'1 Activate and display the window. (restore size and position) Specify this flag when displaying a window for the first time.
'2 Activate & minimize.
'3 Activate & maximize.
'4 Restore. The active window remains active.
'5 Activate & Restore.
'6 Minimize & activate the next top-level window in the Z order.
'7 Minimize. The active window remains active.
'------------------------------------------------------------------
Started: 11.10.2016 13:45:18
Input folder is C:\pictures
Searching for .CR2 files
Queued "C:\cr2hdr\cr2hdr.exe" --compress "IMG_6330.CR2"
Converting Dual ISO .CR2 files
Executing: "C:\cr2hdr\cr2hdr.exe" --compress "IMG_6330.CR2"
No DNG files created. Check script options and log.
======== /Users/appleuser/Downloads/FRSP TEST 1200D/35670000.DNG
ExifTool Version Number : 10.05
File Name : 35670000.DNG
Directory : /Users/appleuser/Downloads/FRSP TEST 1200D
File Size : 31 MB
File Modification Date/Time : 2016:10:11 22:48:34-07:00
File Access Date/Time : 2016:10:11 22:52:05-07:00
File Inode Change Date/Time : 2016:10:11 22:48:34-07:00
File Permissions : rw-r--r--
File Type : DNG
File Type Extension : dng
MIME Type : image/x-adobe-dng
Exif Byte Order : Little-endian (Intel, II)
Image Description :
Make : Canon
Camera Model Name : Canon EOS 1200D
Orientation : Horizontal (normal)
Software : Magic Lantern
Modify Date :
Artist :
Subfile Type : Full-resolution Image
Image Width : 5344
Image Height : 3516
Bits Per Sample : 14
Compression : Uncompressed
Photometric Interpretation : Color Filter Array
Strip Offsets : 33792
Samples Per Pixel : 1
Rows Per Strip : 3516
Strip Byte Counts : 32881632
X Resolution : 180
Y Resolution : 180
Planar Configuration : Chunky
Resolution Unit : inches
CFA Repeat Pattern Dim : 2 2
CFA Pattern 2 : 0 1 1 2
Black Level : 2046
White Level : 13083
Default Crop Origin : 0 0
Default Crop Size : 5199 3464
Active Area : 52 145 3516 5344
Opcode List 1 : (Binary data 28 bytes, use -b option to extract)
Copyright :
Exposure Time : 0
F Number : 0
Exposure Program : Not Defined
ISO : 0
Exif Version : 0221
Date/Time Original :
Shutter Speed Value : 1
Aperture Value : 1.0
Exposure Compensation : 0
Max Aperture Value : 1.0
Metering Mode : Unknown
Flash : No Flash
Focal Length : 0.0 mm
Sub Sec Time :
Sub Sec Time Original :
Focal Length In 35mm Format : 0 mm
TIFF-EP Standard ID : 1 0 0 0
Serial Number :
Lens Model :
DNG Version : 1.3.0.0
DNG Backward Version : 1.3.0.0
Unique Camera Model : Canon EOS 1200D
Color Matrix 1 : 0.6444 -0.0904 -0.0893 -0.4563 1.2308 0.2535 -0.0903 0.2016 0.6728
Analog Balance : 1 1 1
As Shot Neutral : 0.473635 1 0.624
Baseline Exposure : undef
Baseline Noise : 1
Baseline Sharpness : 1.333333333
Linear Response Limit : 1
Calibration Illuminant 1 : D65
Frame Rate : 25
CFA Pattern : [Red,Green][Green,Blue]
Image Size : 5344x3516
Megapixels : 18.8
Shutter Speed : 0
Focal Length : 0.0 mm
======== /Users/appleuser/Downloads/FRSP TEST 1200D/35670001 (1)9.DNG
ExifTool Version Number : 10.05
File Name : 35670001 (1)9.DNG
Directory : /Users/appleuser/Downloads/FRSP TEST 1200D
File Size : 31 MB
File Modification Date/Time : 2016:10:11 22:48:34-07:00
File Access Date/Time : 2016:10:11 22:57:44-07:00
File Inode Change Date/Time : 2016:10:11 22:48:34-07:00
File Permissions : rw-r--r--
File Type : DNG
File Type Extension : dng
MIME Type : image/x-adobe-dng
Exif Byte Order : Little-endian (Intel, II)
Image Description :
Make : Canon
Camera Model Name : Canon EOS 1200D
Orientation : Horizontal (normal)
Software : Magic Lantern
Modify Date :
Artist :
Subfile Type : Full-resolution Image
Image Width : 5344
Image Height : 3516
Bits Per Sample : 14
Compression : Uncompressed
Photometric Interpretation : Color Filter Array
Strip Offsets : 33792
Samples Per Pixel : 1
Rows Per Strip : 3516
Strip Byte Counts : 32881632
X Resolution : 180
Y Resolution : 180
Planar Configuration : Chunky
Resolution Unit : inches
CFA Repeat Pattern Dim : 2 2
CFA Pattern 2 : 0 1 1 2
Black Level : 2046
White Level : 13083
Default Crop Origin : 0 0
Default Crop Size : 5199 3464
Active Area : 52 145 3516 5344
Opcode List 1 : (Binary data 28 bytes, use -b option to extract)
Copyright :
Exposure Time : 0
F Number : 0
Exposure Program : Not Defined
ISO : 0
Exif Version : 0221
Date/Time Original :
Shutter Speed Value : 1
Aperture Value : 1.0
Exposure Compensation : 0
Max Aperture Value : 1.0
Metering Mode : Unknown
Flash : No Flash
Focal Length : 0.0 mm
Sub Sec Time :
Sub Sec Time Original :
Focal Length In 35mm Format : 0 mm
TIFF-EP Standard ID : 1 0 0 0
Serial Number :
Lens Model :
DNG Version : 1.3.0.0
DNG Backward Version : 1.3.0.0
Unique Camera Model : Canon EOS 1200D
Color Matrix 1 : 0.6444 -0.0904 -0.0893 -0.4563 1.2308 0.2535 -0.0903 0.2016 0.6728
Analog Balance : 1 1 1
As Shot Neutral : 0.473635 1 0.624
Baseline Exposure : undef
Baseline Noise : 1
Baseline Sharpness : 1.333333333
Linear Response Limit : 1
Calibration Illuminant 1 : D65
Frame Rate : 25
CFA Pattern : [Red,Green][Green,Blue]
Image Size : 5344x3516
Megapixels : 18.8
Shutter Speed : 0
Focal Length : 0.0 mm
ExifTool Version Number : 10.29
File Name : Mordy.CR2
Directory : /Volumes/SCRATCH/Raw Photots
File Size : 20 MB
File Modification Date/Time : 2016:03:31 10:54:16+11:00
File Access Date/Time : 2016:10:12 20:30:06+11:00
File Inode Change Date/Time : 2016:04:01 15:11:42+11:00
File Permissions : rwxrwxrwx
File Type : CR2
File Type Extension : cr2
MIME Type : image/x-canon-cr2
Exif Byte Order : Little-endian (Intel, II)
Image Width : 5184
Image Height : 3456
Bits Per Sample : 8 8 8
Compression : JPEG (old-style)
Make : Canon
Camera Model Name : Canon EOS 1200D
Preview Image Start : 64392
Orientation : Horizontal (normal)
Preview Image Length : 1029200
X Resolution : 72
Y Resolution : 72
Resolution Unit : inches
Modify Date : 2016:03:31 10:54:14
Artist :
Rating : 0
Copyright :
Exposure Time : 1/250
F Number : 2.8
Exposure Program : Manual
ISO : 100
Sensitivity Type : Recommended Exposure Index
Recommended Exposure Index : 100
Exif Version : 0230
Date/Time Original : 2016:03:31 10:54:14
Create Date : 2016:03:31 10:54:14
Components Configuration : Y, Cb, Cr, -
Shutter Speed Value : 1/256
Aperture Value : 2.8
Flash : Off, Did not fire
Focal Length : 24.0 mm
Macro Mode : Normal
Self Timer : 2 s
Quality : RAW
Canon Flash Mode : Off
Continuous Drive : Single
Focus Mode : One-shot AF
Record Mode : CR2+JPEG
Canon Image Size : Large
Easy Mode : Manual
Digital Zoom : None
Contrast : Normal
Saturation : Normal
Camera ISO : Auto
Metering Mode : Evaluative
Focus Range : Not Known
Canon Exposure Mode : Manual
Lens Type : Canon EF-S 24mm f/2.8 STM
Max Focal Length : 24 mm
Min Focal Length : 24 mm
Focal Units : 1/mm
Max Aperture : 2.8
Min Aperture : 23
Flash Activity : 0
Flash Bits : (none)
Zoom Source Width : 0
Zoom Target Width : 0
Manual Flash Output : n/a
Color Tone : Normal
SRAW Quality : n/a
Auto ISO : 100
Base ISO : 100
Measured EV : 11.00
Target Aperture : 2.8
Target Exposure Time : 1/256
Exposure Compensation : 0
White Balance : Auto
Slow Shutter : None
Shot Number In Continuous Burst : 0
Optical Zoom Code : n/a
Camera Temperature : 36 C
Flash Guide Number : 0
Flash Exposure Compensation : 0
Auto Exposure Bracketing : Off
AEB Bracket Value : 0
Control Mode : Camera Local Control
Measured EV 2 : 10.5
Bulb Duration : 0
Camera Type : EOS High-end
ND Filter : n/a
Canon Image Type : Canon EOS 1200D
Canon Firmware Version : Firmware Version 1.0.0
Firmware Version : 1.0.0
Contrast Standard : 0
Sharpness Standard : 3
Saturation Standard : 0
Color Tone Standard : 0
Contrast Portrait : 0
Sharpness Portrait : 2
Saturation Portrait : 0
Color Tone Portrait : 0
Contrast Landscape : 0
Sharpness Landscape : 4
Saturation Landscape : 0
Color Tone Landscape : 0
Contrast Neutral : 0
Sharpness Neutral : 0
Saturation Neutral : 0
Color Tone Neutral : 0
Contrast Faithful : 0
Sharpness Faithful : 0
Saturation Faithful : 0
Color Tone Faithful : 0
Contrast Monochrome : 0
Sharpness Monochrome : 3
Filter Effect Monochrome : None
Toning Effect Monochrome : None
Contrast Auto : 0
Sharpness Auto : 3
Saturation Auto : 0
Color Tone Auto : 0
Filter Effect Auto : n/a
Toning Effect Auto : n/a
Contrast User Def 1 : -4
Sharpness User Def 1 : 0
Saturation User Def 1 : 0
Color Tone User Def 1 : 0
Filter Effect User Def 1 : None
Toning Effect User Def 1 : None
Contrast User Def 2 : 0
Sharpness User Def 2 : 3
Saturation User Def 2 : 0
Color Tone User Def 2 : 0
Filter Effect User Def 2 : None
Toning Effect User Def 2 : None
Contrast User Def 3 : 0
Sharpness User Def 3 : 3
Saturation User Def 3 : 0
Color Tone User Def 3 : 0
Filter Effect User Def 3 : None
Toning Effect User Def 3 : None
User Def 1 Picture Style : PC 1
User Def 2 Picture Style : Auto
User Def 3 Picture Style : Auto
Canon Model ID : EOS Rebel T5 / 1200D / Kiss X70
Thumbnail Image Valid Area : 0 159 7 112
AF Area Mode : Flexizone Single
Num AF Points : 9
Valid AF Points : 1
Canon Image Width : 5184
Canon Image Height : 3456
AF Image Width : 5184
AF Image Height : 3456
AF Area Widths : 512 0 0 0 0 0 0 0 0
AF Area Heights : 684 0 0 0 0 0 0 0 0
AF Area X Positions : 0 0 0 0 0 0 0 0 0
AF Area Y Positions : 70 0 0 0 0 0 0 0 0
AF Points In Focus : (none)
AF Points Selected : 0
Time Zone : +10:00
Time Zone City : Sydney
Daylight Savings : Off
Bracket Mode : Off
Bracket Value : 0
Bracket Shot Number : 0
Raw Jpg Size : Large
Long Exposure Noise Reduction 2 : Off
WB Bracket Mode : Off
WB Bracket Value AB : 0
WB Bracket Value GM : 0
Live View Shooting : On
Focus Distance Upper : inf
Focus Distance Lower : 6.31 m
Flash Exposure Lock : Off
Internal Serial Number : MA1267450
Dust Removal Data : (Binary data 1024 bytes, use -b option to extract)
Crop Left Margin : 0
Crop Right Margin : 0
Crop Top Margin : 0
Crop Bottom Margin : 0
Exposure Level Increments : 1/3 Stop
ISO Expansion : Off
Flash Sync Speed Av : Auto
Long Exposure Noise Reduction : Off
High ISO Noise Reduction : Off
Highlight Tone Priority : Disable
AF Assist Beam : Emits
Shutter Button AF On Button : Metering + AF start/AF stop
Set Button When Shooting : Normal (disabled)
Flash Button Function : Raise built-in flash
LCD Display At Power On : Display
Aspect Ratio : 3:2
Cropped Image Width : 5184
Cropped Image Height : 3456
Cropped Image Left : 0
Cropped Image Top : 0
Tone Curve : Standard
Sharpness : 0
Sharpness Frequency : n/a
Sensor Red Level : 0
Sensor Blue Level : 0
White Balance Red : 0
White Balance Blue : 0
Color Temperature : 5200
Picture Style : Neutral
Digital Gain : 0
WB Shift AB : 0
WB Shift GM : 0
Measured RGGB : 377 1024 1024 861
VRD Offset : 0
Sensor Width : 5344
Sensor Height : 3516
Sensor Left Border : 152
Sensor Top Border : 56
Sensor Right Border : 5335
Sensor Bottom Border : 3511
Black Mask Left Border : 0
Black Mask Top Border : 0
Black Mask Right Border : 0
Black Mask Bottom Border : 0
Color Data Version : 10 (600D/1200D)
WB RGGB Levels As Shot : 2310 1024 1024 1301
Color Temp As Shot : 7049
WB RGGB Levels Auto : 2310 1024 1024 1301
Color Temp Auto : 7049
WB RGGB Levels Measured : 2310 1024 1024 1301
Color Temp Measured : 7049
WB RGGB Levels Daylight : 2028 1024 1024 1547
Color Temp Daylight : 5200
WB RGGB Levels Shade : 2335 1024 1024 1314
Color Temp Shade : 7000
WB RGGB Levels Cloudy : 2180 1024 1024 1421
Color Temp Cloudy : 6000
WB RGGB Levels Tungsten : 1458 1024 1024 2330
Color Temp Tungsten : 3200
WB RGGB Levels Fluorescent : 1789 1024 1024 2217
Color Temp Fluorescent : 3729
WB RGGB Levels Kelvin : 2028 1024 1024 1547
Color Temp Kelvin : 5212
WB RGGB Levels Flash : 2265 1024 1024 1402
Color Temp Flash : 6339
Average Black Level : 2046 2046 2046 2046
Raw Measured RGGB : 136295 340235 341183 288999
Per Channel Black Level : 2045 2046 2046 2046
Normal White Level : 12237
Specular White Level : 12749
Linearity Upper Margin : 10400
Picture Style User Def : PC 1; Auto; Auto
Picture Style PC : Neutral; None; None
Custom Picture Style File Name :
Vignetting Corr Version : 0
Peripheral Lighting : Off
Chromatic Aberration Corr : Off
Peripheral Lighting Value : 0
Original Image Width : 5184
Original Image Height : 3456
Peripheral Lighting Setting : Off
Peripheral Illumination Corr : Off
Auto Lighting Optimizer : Off
Ambience Selection : Standard
User Comment :
Sub Sec Time : 54
Sub Sec Time Original : 54
Sub Sec Time Digitized : 54
Flashpix Version : 0100
Color Space : sRGB
Exif Image Width : 5184
Exif Image Height : 3456
Interoperability Index : R98 - DCF basic file (sRGB)
Interoperability Version : 0100
Focal Plane X Resolution : 5728.176796
Focal Plane Y Resolution : 5808.403361
Focal Plane Resolution Unit : inches
Custom Rendered : Normal
Exposure Mode : Manual
Scene Capture Type : Standard
Owner Name :
Serial Number : 095073069988
Lens Info : 24mm f/?
Lens Model : EF-S24mm f/2.8 STM
Lens Serial Number : 0000213e60
GPS Version ID : 2.3.0.0
Thumbnail Offset : 56248
Thumbnail Length : 8144
Photometric Interpretation : RGB
Samples Per Pixel : 3
Rows Per Strip : 432
Planar Configuration : Chunky
Strip Offsets : 2830296
Strip Byte Counts : 18142637
Raw Image Segmentation : 2 1728 1888
SRaw Type : 1
Aperture : 2.8
Drive Mode : Self-timer Operation
Image Size : 5184x3456
Lens : 24.0 mm
Lens ID : Canon EF-S 24mm f/2.8 STM
Megapixels : 17.9
Preview Image : (Binary data 1029200 bytes, use -b option to extract)
Scale Factor To 35 mm Equivalent: 1.6
Shooting Mode : Manual
Shutter Speed : 1/250
Create Date : 2016:03:31 10:54:14.54
Date/Time Original : 2016:03:31 10:54:14.54
Modify Date : 2016:03:31 10:54:14.54
Thumbnail Image : (Binary data 8144 bytes, use -b option to extract)
WB RGGB Levels : 2310 1024 1024 1301
Blue Balance : 1.270508
Circle Of Confusion : 0.019 mm
Depth Of Field : inf (10.43 m - inf)
Field Of View : 51.0 deg
Focal Length : 24.0 mm (35 mm equivalent: 37.7 mm)
Hyperfocal Distance : 10.77 m
Lens : 24.0 mm (35 mm equivalent: 37.7 mm)
Light Value : 10.9
Red Balance : 2.255859
I think I found the error. You have to place VBscript file somewhere else. If located in the EXEs folder it will fail.
didnt work. i think it is win10 or something else on my system. seems like i have to live with one instance, or reinstall win7.
/* skip one line */
raw_info.buffer += width * 14/8;
height--;
Black Level : 2046 2046 2046 2046
White Level : 12749
Black Level : 2046 2046 2046 2046
White Level : 12749
Black Level : 2048 2048 2048 2048
White Level : 11222
/* skip one line */
raw_info.buffer += width * 14/8;
height--;
Hey I'm new and cant seem to find any download link for the firmware.http://www.magiclantern.fm/forum/index.php?topic=12627.msg172269.msg#172269
I've been through every page but my laptop is incredibly slow and jumps all over the place when I scroll down. Sorry to be asking but could somebody reply with a download link. It would be greatly appreciated. Thanks
Magic Lantern
nightly.2016jul30.1200D101
Model Detection Error.
Your camera doesn't look like a 1200D 1.0.1.
Greetings,Did you update the firmware first before installing ML? Did you follow all steps in the link above in the correct order? Did you get to the =) stage? Do you have another card to test it on?
After going through what seemed like a process some sort of wizard might use to summon the devil, I was able to get ML for the 1200D onto a 64GB memory card, with boot record. I'm on a Mac, so the process was especially convoluted.
Anyway, I've got the 1200D.FIR, the ML build from July 30th all on there in the root folder. It seems to install just fine, and without a memory card in I can use the camera as normal, however if I put my 1200D.FIR card in there I get an error:
I own a Rebel T5 for the american market: DS126491 as the model and the error reads:
My firmware definitely was 1.0.1 and my camera is, ostensibly, a 1200D.
What have I done wrong? I'm not in the business of trying to summon demons often, so this is confusing.
sudo -s /Volumes/EOS_DIGITAL/make_bootable.sh
, that gave me this error: + echo 'Error: /dev/disk1s1 is not a FAT16, FAT32 of EXFAT device'
Error: /dev/disk1s1 is not a FAT16, FAT32 of EXFAT device
+ echo 'Format your card in camera before using this script'
Format your card in camera before using this script
+ echo debug /dev/disk1s1
debug /dev/disk1s1
+ exit
Useless to say that I had formatted my card in camera, using low level formatting.Skip one line will solve this problem.
exiftool *.DNG -ActiveArea="52 142 3516 5344"
Here, the problem was different: skip_left was 145, must be even. Fix committed and tested in QEMU:Great, thank you so much @a1ex! Does committed mean that this fix will be automatically picked up for next port?
(https://www.magiclantern.fm/forum/proxy.php?request=http%3A%2F%2Fa1ex.magiclantern.fm%2Fbleeding-edge%2Fqemu%2Fqemu-1200D-frsp.png&hash=ce4d7bd3573fc9e003d8f7acb368732f)
To fix existing pictures:Code: [Select]exiftool *.DNG -ActiveArea="52 142 3516 5344"
Bug Reporting (fill in OK / Not OK {e.g. screen flickering or camera crashed while taking a shoot or ........}:
http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
Don't report bugs on the official issue tracker. We can only do so after being rest assured we got a stable release and the necessary source code changes are merged in officially.
Keep in mind: We need to list bugs in a readable and provable way.
- Overlays
-Zebras: ____
-Focus Peak: ____
- ....- Shoot
-Intervalometer: ____
-Bracketing: ____
-.....- Included Modules
- Raw_rec: ____
- autoexpo: ____
- ....- Other issues:
_______________________________________
....
What's working:What's not working:
- You tell me. Don't forget to report like instructed above (fill in OK)
- You tell me...
Just added a complete test build here: http://builds.magiclantern.fm/jenkins/job/1200D.101/
The installer is untested, and I'm not sure what exactly works and what not. Therefore, please write down a menu walkthrough (see e.g. 70D and 100D for models).
I'm also looking for logs from stubs test (selftest.mo) and api_test.lua (lua.mo). These tests were updated since last time they were run.
is there a way to make a back up of the camera's operating system if something should go horribly wrong?
I noticed that the modules section only displays the details after each one has been hovered over.
Scanning modules...
Load modules...
[i] load: SELFTEST.MO
linking..
tcc: error: undefined symbol 'bv_toggle'
[E] failed to link modules
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2017-2-24 22:22:25
===============================================================================
Strict mode tests...
Strict mode tests passed.
Generic tests...
arg = table:
[0] = "API_TEST.LUA"
camera = table:
shutter = table:
raw = 0
apex = -7.
ms = 0
value = 0
aperture = table:
raw = 75
apex = 8.374999
value = 18.2
min = table:
raw = 45
apex = 4.624999
value = 4.9
max = table:
raw = 88
apex = 10
value = 32
iso = table:
raw = 0
apex = -4
value = 0
ec = table:
raw = 0
value = 0
flash_ec = table:
raw = 0
value = 0
kelvin = 5200
mode = 0
metering_mode = 3
drive_mode = 0
model = "Canon EOS 1200D"
model_short = "1200D"
firmware = "1.0.1"
temperature = 165
state = 0
reboot = function: p
burst = function: p
shoot = function: p
bulb = function: p
event = table:
pre_shoot = nil
post_shoot = nil
shoot_task = nil
seconds_clock = nil
keypress = nil
custom_picture_taking = nil
intervalometer = nil
config_save = nil
console = table:
hide = function: p
write = function: p
show = function: p
clear = function: p
lv = table:
enabled = false
paused = false
running = false
zoom = 1
wait = function: p
info = function: p
resume = function: p
stop = function: p
start = function: p
pause = function: p
lens = table:
name = "EF-S18-55mm f/3.5-5.6 III"
focal_length = 0
focus_distance = 14080
hyperfocal = 0
dof_near = 0
dof_far = 0
af = false
af_mode = 771
focus = function: p
autofocus = function: p
display = table:
idle = true
height = 480
width = 720
pixel = function: p
print = function: p
notify_box = function: p
rect = function: p
screenshot = function: p
draw = function: p
load = function: p
circle = function: p
on = function: p
off = function: p
line = function: p
clear = function: p
key = table:
last = 10
wait = function: p
press = function: p
menu = table:
visible = false
close = function: p
set = function: p
open = function: p
new = function: p
block = function: p
get = function: p
movie = table:
recording = false
start = function: p
stop = function: p
dryos = table:
clock = 39
ms_clock = 39453
prefix = "IMG_"
dcim_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "B:/DCIM/"
path = "B:/DCIM/100CANON/"
config_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "ML/"
path = "ML/SETTINGS/"
ml_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 84
folder_number = 100
free_space = 14400608
type = "SD"
_card_ptr = userdata
path = "B:/"
shooting_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 84
folder_number = 100
free_space = 14400608
type = "SD"
_card_ptr = userdata
path = "B:/"
date = table:
yday = 55
wday = 6
isdst = false
day = 24
month = 2
year = 2017
hour = 22
sec = 27
min = 22
rename = function: p
call = function: p
directory = function: p
remove = function: p
interval = table:
time = 10
count = 0
running = false
stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:32: in function <ML/SCRIPTS/API_TEST.LUA:31>
[C]: in function 'globals.xpcall'
ML/SCRIPTS/API_TEST.LUA:31: in function 'globals.print_table'
ML/SCRIPTS/API_TEST.LUA:77: in function 'globals.generic_tests'
ML/SCRIPTS/API_TEST.LUA:832: in function 'globals.api_tests'
ML/SCRIPTS/API_TEST.LUA:855: in main chunktask = table:
create = function: p
yield = function: p
property = table:
Generic tests completed.
Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.
Testing half-shutter...
half-shutter...
/** Properties are persistent (saved in NVRAM) => a mistake can cause permanent damage. Undefine this for new ports. */
#undef CONFIG_PROP_REQUEST_CHANGE
[Pass] is_play_mode() => 0x1
[Pass] f = FIO_CreateFile("test.dat") => 0x3
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
FIO_CloseFile(f)
[Pass] FIO_GetFileSize("test.dat", &size) => 0x0
[Pass] size => 0x20000
[Pass] p = (void*)_alloc_dma_memory(0x20000) => 0x40997048
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x3
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
FIO_CloseFile(f)
_free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x423680d4
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x3
[Pass] FIO_SeekSkipFile(f, 0, SEEK_END) => 0x82000000
[Pass] FIO_WriteFile(f, buf, 0x10) => 0x10
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_END) => 0x81fffff0
[Pass] FIO_WriteFile(f, buf, 0x30) => 0x30
[Pass] FIO_SeekSkipFile(f, 0x20, SEEK_SET) => 0x20
[Pass] FIO_SeekSkipFile(f, 0x30, SEEK_CUR) => 0x50
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_CUR) => 0x30
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000020
[Pass] FIO_RemoveFile("test.dat") => 0x0
[Pass] SetTimerAfter(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x2268
msleep(900)
[Pass] timer_func => 0x0
msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x9
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x226a
msleep(400)
CancelTimer(timer)
[Pass] timer_func => 0x0
msleep(1500)
[Pass] timer_func => 0x0
[Pass] SetHPTimerAfterNow(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetHPTimerAfterNow(100000, timer_cbr, overrun_cbr, 0) => 0x258
msleep(90)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x13d
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0xf8
[Pass] ABS((get_us_clock_value() - t0) - 110000) => 0xffffff8b
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x25a
msleep(80)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x3
msleep(80)
[Pass] timer_func => 0x3
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 300000) => 0x53
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0xe
[Pass] ABS((get_us_clock_value() - t0) - 310000) => 0xffffff22
t0 = *(uint32_t*)0xC0242014 => 0x2e1d5
msleep(250)
t1 = *(uint32_t*)0xC0242014 => 0x6b235
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x1
LoadCalendarFromRTC( &now )
s0 = now.tm_sec => 0x35
Date/time: 2017/02/26 19:49:53
msleep(1500)
LoadCalendarFromRTC( &now )
s1 = now.tm_sec => 0x37
[Pass] MOD(s1-s0, 60) => 0x2
[Pass] MOD(s1-s0, 60) => 0x2
m0 = MALLOC_FREE_MEMORY => 0x3dee8
[Pass] p = (void*)_malloc(50*1024) => 0xc6f28
[Pass] CACHEABLE(p) => 0xc6f28
m1 = MALLOC_FREE_MEMORY => 0x316d8
_free(p)
m2 = MALLOC_FREE_MEMORY => 0x3dee8
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m0 = GetFreeMemForAllocateMemory() => 0x141bcc
[Pass] p = (void*)_AllocateMemory(256*1024) => 0xba7fb4
[Pass] CACHEABLE(p) => 0xba7fb4
m1 = GetFreeMemForAllocateMemory() => 0x101bbc
_FreeMemory(p)
m2 = GetFreeMemForAllocateMemory() => 0x141bcc
[Pass] ABS((m0-m1) - 256*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m01 = MALLOC_FREE_MEMORY => 0x3dee8
m02 = GetFreeMemForAllocateMemory() => 0x141bcc
[Pass] p = (void*)_alloc_dma_memory(256*1024) => 0x40ba7ff4
[Pass] UNCACHEABLE(p) => 0x40ba7ff4
[Pass] CACHEABLE(p) => 0xba7ff4
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40ba7ff4
_free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(24*1024*1024) => 0x423680b4
[Pass] UNCACHEABLE(p) => 0x423680b4
_shoot_free(p)
m11 = MALLOC_FREE_MEMORY => 0x3dee8
m12 = GetFreeMemForAllocateMemory() => 0x141bcc
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(24*1024*1024) => 0xc5888
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1800000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc58b0
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1800000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x423680b0
[Pass] UNCACHEABLE(p) => 0x423680b0
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xc5888
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1dd4000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc58b0
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1dd4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(64*1024*1024) => 0xc5888
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x3
[Pass] suite->size => 0x4000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc58b0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1c94000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x423680b0
[Pass] UNCACHEABLE(p) => 0x423680b0
chunk = GetNextMemoryChunk(suite, chunk) => 0xc5910
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2898000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc5948
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4000000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xc5888
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x3
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc58b0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1c94000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x423680b0
[Pass] UNCACHEABLE(p) => 0x423680b0
chunk = GetNextMemoryChunk(suite, chunk) => 0xc5910
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2898000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc5948
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4700000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x16bcbc
[Pass] msg => 'hi there'
[Pass] snprintf(a, sizeof(a), "foo") => 0x3
[Pass] snprintf(b, sizeof(b), "foo") => 0x3
[Pass] strcmp(a, b) => 0x0
[Pass] snprintf(a, sizeof(a), "bar") => 0x3
[Pass] snprintf(b, sizeof(b), "baz") => 0x3
[Pass] strcmp(a, b) => 0xfffffff8
[Pass] snprintf(a, sizeof(a), "Display") => 0x7
[Pass] snprintf(b, sizeof(b), "Defishing") => 0x9
[Pass] strcmp(a, b) => 0x4
[Pass] snprintf(buf, 3, "%d", 1234) => 0x2
[Pass] buf => '12'
[Pass] memcpy(foo, bar, 6) => 0x16bc80
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x16bc60
[Pass] bar => '*****hjkl;'
bzero32(bar + 5, 5)
[Pass] bar => '****'
EngDrvOut(LCD_Palette[0], 0x1234)
[Pass] shamem_read(LCD_Palette[0]) => 0x1234
call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
call("TurnOffDisplay")
[Pass] DISPLAY_IS_ON => 0x0
call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
task_create("test", 0x1c, 0x1000, test_task, 0) => 0x67c00be
[Pass] test_task_created => 0x1
[Pass] get_task_name_from_id(get_current_task()) => 'run_test'
[Pass] task_max => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0x67e0096
[Pass] msg_queue_post(mq, 0x1234567) => 0x0
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x0
[Pass] m => 0x1234567
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x9
[Pass] sem = sem ? sem : create_named_semaphore("test", 1) => 0x6800304
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] take_semaphore(sem, 500) => 0x9
[Pass] give_semaphore(sem) => 0x0
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] give_semaphore(sem) => 0x0
[Pass] rlock = rlock ? rlock : CreateRecursiveLock(0) => 0x682006a
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0xf
SetGUIRequestMode(1); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x1
SetGUIRequestMode(2); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x2
SetGUIRequestMode(0); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x0
[Pass] display_idle() => 0x1
GUI_Control(BGMT_PLAY, 0, 0, 0); msleep(1000);
[Pass] PLAY_MODE => 0x1
[Pass] MENU_MODE => 0x0
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(1000);
[Pass] MENU_MODE => 0x1
[Pass] PLAY_MODE => 0x0
[Pass] dialog->type => 'DIALOG'
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[Pass] MENU_MODE => 0x0
[Pass] PLAY_MODE => 0x0
SW1(1,100)
[FAIL] HALFSHUTTER_PRESSED => 0x0
SW1(0,100)
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x1
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x1
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
In the end it says: Test complete. 4401 passed, 1 failed.
Hello! I am doing tests with the RAW video of the canon 1200D and I have results.
Test, as in really test. As if you were QC working for a software company. Don't just use ML in normal situations and submit problems when things go wrong (and don't just do another ML RAW vs. H264 test, there are more than plenty of those out there). Try to break a feature. Think of as many possible scenarios as you can. Throw everything you can think of at a feature to break it. Try every value of every setting. Try it in extremely unusual scenes or lighting. Write down your results like a scientist doing an expirement. Then share your results, even if nothing went wrong. It's also helpful for devs to know when something actually works. Test for the sake of testing, with specific intention, not for the sake of making your 'budget short film'.
That means, the installer (http://www.magiclantern.fm/forum/index.php?topic=12627.msg179885#msg179885) didn't work?
Did you also have any kind of raw video in the previous build?Same question here!
[Pass] is_play_mode() => 0x1
[Pass] src = fio_malloc(size) => 0x4233c0c4
[Pass] dst = fio_malloc(size) => 0x42b400d4
[Pass] memcmp(dst, src, 4097) => 0xffffff79
[Pass] edmac_memcpy(dst, src, 4097) => 0x42b400d4
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x42b400d4
[Pass] memcmp(dst, src, size) => 0xffffff13
[Pass] edmac_memcpy(dst, src, size) => 0x42b400d4
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0xffffffd5
[Pass] edmac_memcpy_start(dst, src, size) => 0x42b400d4
dt => 0x3143
[Pass] copied => 0x40216c
[Pass] copied => 0x40216c
[Pass] copied => 0x40216c
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0x3d
edmac_memcpy_finish()
free(src)
free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xcbc10
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x360
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0xf3
[Pass] tries[1] => 0xef
[Pass] tries[2] => 0x107
[Pass] tries[3] => 0xff
[Pass] failr[0] => 0xa6
[Pass] failw[0] => 0xd4
[Pass] failr[1] => 0x8d
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xe6
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
times[0] / tries[0] => 0x1f
times[1] / tries[1] => 0x1e
times[2] / tries[2] => 0x21
times[3] / tries[3] => 0x22
Cache tests finished.
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] f = FIO_CreateFile("test.dat") => 0x3
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
FIO_CloseFile(f)
[Pass] FIO_GetFileSize("test.dat", &size) => 0x0
[Pass] size => 0x20000
[Pass] p = (void*)_alloc_dma_memory(0x20000) => 0x409af030
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x3
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
FIO_CloseFile(f)
_free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x42204094
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x3
[Pass] FIO_SeekSkipFile(f, 0, SEEK_END) => 0x82000000
[Pass] FIO_WriteFile(f, buf, 0x10) => 0x10
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_END) => 0x81fffff0
[Pass] FIO_WriteFile(f, buf, 0x30) => 0x30
[Pass] FIO_SeekSkipFile(f, 0x20, SEEK_SET) => 0x20
[Pass] FIO_SeekSkipFile(f, 0x30, SEEK_CUR) => 0x50
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_CUR) => 0x30
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000020
[Pass] is_file("test.dat") => 0x1
[Pass] FIO_RemoveFile("test.dat") => 0x0
[Pass] is_file("test.dat") => 0x0
[Pass] SetTimerAfter(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x882e
msleep(900)
[Pass] timer_func => 0x0
msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x7
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x8830
msleep(400)
CancelTimer(timer)
[Pass] timer_func => 0x0
msleep(1500)
[Pass] timer_func => 0x0
[Pass] SetHPTimerAfterNow(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetHPTimerAfterNow(100000, timer_cbr, overrun_cbr, 0) => 0x4aa
msleep(90)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x15f
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0x11b
[Pass] ABS((get_us_clock_value() - t0) - 110000) => 0x55b
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x4ac
msleep(80)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x3
msleep(80)
[FAIL] timer_func => 0x1
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 300000) => 0x62a
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x5d3
[FAIL] ABS((get_us_clock_value() - t0) - 310000) => 0xc8b7
t0 = *(uint32_t*)0xC0242014 => 0x299a2
msleep(250)
t1 = *(uint32_t*)0xC0242014 => 0x64952
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x9
LoadCalendarFromRTC( &now )
s0 = now.tm_sec => 0x1d
Date/time: 2017/09/18 01:26:29
msleep(1500)
LoadCalendarFromRTC( &now )
s1 = now.tm_sec => 0x1f
[Pass] MOD(s1-s0, 60) => 0x2
[Pass] MOD(s1-s0, 60) => 0x2
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2017-9-18 01:41:02
===============================================================================
Strict mode tests...
Strict mode tests passed.
Generic tests...
arg = table:
[0] = "API_TEST.LUA"
camera = table:
shutter = table:
raw = 80
apex = 3.
ms = 125
value = 0.124999
aperture = table:
raw = 45
apex = 4.624999
value = 4.9
min = table:
raw = 45
apex = 4.624999
value = 4.9
max = table:
raw = 82
apex = 9.25
value = 24.6
iso = table:
raw = 72
apex = 5
value = 100
ec = table:
raw = 0
value = 0
flash_ec = table:
raw = 0
value = 0
kelvin = 6000
mode = 3
metering_mode = 3
drive_mode = 0
model = "Canon EOS 1200D"
model_short = "1200D"
firmware = "1.0.1"
temperature = 176
state = 0
bulb = function: p
burst = function: p
wait = function: p
shoot = function: p
reboot = function: p
event = table:
pre_shoot = nil
post_shoot = nil
shoot_task = nil
seconds_clock = nil
keypress = nil
custom_picture_taking = nil
intervalometer = nil
config_save = nil
console = table:
write = function: p
show = function: p
clear = function: p
hide = function: p
lv = table:
enabled = false
paused = false
running = false
zoom = 1
resume = function: p
pause = function: p
stop = function: p
wait = function: p
info = function: p
start = function: p
lens = table:
name = "EF-S10-18mm f/4.5-5.6 IS STM"
focal_length = 0
focus_distance = 14080
hyperfocal = 0
dof_near = 0
dof_far = 0
af = true
af_mode = 0
focus = function: p
autofocus = function: p
display = table:
idle = true
height = 480
width = 720
load = function: p
clear = function: p
print = function: p
notify_box = function: p
draw = function: p
line = function: p
on = function: p
screenshot = function: p
rect = function: p
off = function: p
circle = function: p
pixel = function: p
key = table:
last = 10
press = function: p
wait = function: p
menu = table:
visible = false
get = function: p
select = function: p
new = function: p
set = function: p
close = function: p
open = function: p
block = function: p
movie = table:
recording = false
stop = function: p
start = function: p
dryos = table:
clock = 22
ms_clock = 22422
image_prefix = "IMG_"
dcim_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "B:/DCIM/"
path = "B:/DCIM/104CANON/"
config_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "ML/"
path = "ML/SETTINGS/"
ml_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 251
folder_number = 104
free_space = 21845824
type = "SD"
path = "B:/"
_card_ptr = userdata
shooting_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 251
folder_number = 104
free_space = 21845824
type = "SD"
path = "B:/"
_card_ptr = userdata
date = table:
year = 2017
min = 41
hour = 1
isdst = false
day = 18
month = 9
wday = 2
yday = 261
sec = 2
directory = function: p
call = function: p
rename = function: p
remove = function: p
interval = table:
time = 10
count = 0
running = false
stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:32: in function <ML/SCRIPTS/API_TEST.LUA:31>
[C]: in function 'globals.xpcall'
ML/SCRIPTS/API_TEST.LUA:31: in function 'globals.print_table'
ML/SCRIPTS/API_TEST.LUA:77: in function 'globals.generic_tests'
ML/SCRIPTS/API_TEST.LUA:1155: in function 'globals.api_tests'
ML/SCRIPTS/API_TEST.LUA:1180: in main chunktask = table:
create = function: p
yield = function: p
property = table:
Generic tests completed.
Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.
Testing menu API...
Menu tests completed.
Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/104CANON/IMG_0252.CR2: 23342908
B:/DCIM/104CANON/IMG_0252.JPG: 5848968
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/104CANON/ABC_0253.CR2: 23337577
B:/DCIM/104CANON/ABC_0253.JPG: 5829948
B:/DCIM/104CANON/ABC_0254.CR2: 23338605
B:/DCIM/104CANON/ABC_0254.JPG: 5829263
Bracketed pictures...
B:/DCIM/104CANON/IMG_0255.CR2: 20946081
B:/DCIM/104CANON/IMG_0255.JPG: 3572488
B:/DCIM/104CANON/IMG_0256.CR2: 23345659
B:/DCIM/104CANON/IMG_0256.JPG: 5846570
B:/DCIM/104CANON/IMG_0257.CR2: 26253484
B:/DCIM/104CANON/IMG_0257.JPG: 5369382
Bulb picture...
Elapsed time: 11486
B:/DCIM/104CANON/IMG_0258.CR2: 14243441
B:/DCIM/104CANON/IMG_0258.JPG: 365013
Picture taking tests completed.
Testing multitasking...
Only one task allowed to interrupt...
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Multitasking tests completed.
Testing half-shutter...
Half-shutter test OK.
Testing module 'lv'...
Starting LiveView...
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.
Testing lens focus functionality...
Autofocus outside LiveView...
I have the screenshots, but they are not correct. As in what I see and what is in the file is not nearly identical.
With Zebras on, set overexposure at 99% and underexposure at 1%, it toggles between showing one ant the other. I am not sure if that is intentional.
The PPM has diagonal orange lines basically over the whole image except in spotmeter. I guess spotmeter, graphs, Q options etc are in the upper layers.
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2017-9-18 15:24:20
===============================================================================
Strict mode tests...
Strict mode tests passed.
Generic tests...
arg = table:
[0] = "API_TEST.LUA"
camera = table:
shutter = table:
raw = 27
apex = -3.625
ms = 12338
value = 12.337686
aperture = table:
raw = 48
apex = 5
value = 5.599999
min = table:
raw = 44
apex = 4.5
value = 4.7
max = table:
raw = 81
apex = 9.124999
value = 23.6
iso = table:
raw = 104
apex = 9
value = 1600
ec = table:
raw = 0
value = 0
flash_ec = table:
raw = 0
value = 0
kelvin = 6000
mode = 3
metering_mode = 3
drive_mode = 0
model = "Canon EOS 1200D"
model_short = "1200D"
firmware = "1.0.1"
temperature = 172
state = 0
reboot = function: p
shoot = function: p
wait = function: p
bulb = function: p
burst = function: p
event = table:
pre_shoot = nil
post_shoot = nil
shoot_task = nil
seconds_clock = nil
keypress = nil
custom_picture_taking = nil
intervalometer = nil
config_save = nil
console = table:
clear = function: p
show = function: p
write = function: p
hide = function: p
lv = table:
enabled = false
paused = false
running = false
zoom = 1
resume = function: p
stop = function: p
pause = function: p
info = function: p
wait = function: p
start = function: p
lens = table:
name = "EF-S10-18mm f/4.5-5.6 IS STM"
focal_length = 0
focus_distance = 14080
hyperfocal = 0
dof_near = 0
dof_far = 0
af = true
af_mode = 0
focus = function: p
autofocus = function: p
display = table:
idle = true
height = 480
width = 720
clear = function: p
rect = function: p
circle = function: p
load = function: p
off = function: p
on = function: p
line = function: p
notify_box = function: p
draw = function: p
screenshot = function: p
pixel = function: p
print = function: p
key = table:
last = 10
wait = function: p
press = function: p
menu = table:
visible = false
set = function: p
open = function: p
block = function: p
select = function: p
get = function: p
close = function: p
new = function: p
movie = table:
recording = false
stop = function: p
start = function: p
dryos = table:
clock = 15
ms_clock = 15719
image_prefix = "IMG_"
dcim_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "B:/DCIM/"
path = "B:/DCIM/104CANON/"
config_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "ML/"
path = "ML/SETTINGS/"
ml_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 302
folder_number = 104
free_space = 20006816
type = "SD"
path = "B:/"
_card_ptr = userdata
shooting_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 302
folder_number = 104
free_space = 20006816
type = "SD"
path = "B:/"
_card_ptr = userdata
date = table:
day = 18
wday = 2
year = 2017
min = 24
isdst = false
sec = 21
month = 9
hour = 15
yday = 261
call = function: p
directory = function: p
rename = function: p
remove = function: p
interval = table:
time = 10
count = 0
running = false
stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:32: in function <ML/SCRIPTS/API_TEST.LUA:31>
[C]: in function 'xpcall'
ML/SCRIPTS/API_TEST.LUA:31: in function 'print_table'
ML/SCRIPTS/API_TEST.LUA:77: in function 'generic_tests'
ML/SCRIPTS/API_TEST.LUA:1155: in function 'api_tests'
ML/SCRIPTS/API_TEST.LUA:1180: in main chunktask = table:
create = function: p
yield = function: p
property = table:
Generic tests completed.
Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.
Testing menu API...
Menu tests completed.
Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/104CANON/IMG_0303.CR2: 25801603
B:/DCIM/104CANON/IMG_0303.JPG: 5574998
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/104CANON/ABC_0304.CR2: 25780511
B:/DCIM/104CANON/ABC_0304.JPG: 5618666
B:/DCIM/104CANON/ABC_0305.CR2: 25799499
B:/DCIM/104CANON/ABC_0305.JPG: 5612232
Bracketed pictures...
B:/DCIM/104CANON/IMG_0306.CR2: 22706513
B:/DCIM/104CANON/IMG_0306.JPG: 4545727
B:/DCIM/104CANON/IMG_0307.CR2: 25793189
B:/DCIM/104CANON/IMG_0307.JPG: 5582638
B:/DCIM/104CANON/IMG_0308.CR2: 23506898
B:/DCIM/104CANON/IMG_0308.JPG: 3162347
Bulb picture...
Elapsed time: 11587
B:/DCIM/104CANON/IMG_0309.CR2: 14259065
B:/DCIM/104CANON/IMG_0309.JPG: 365013
Picture taking tests completed.
Testing multitasking...
Only one task allowed to interrupt...
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Multitasking tests completed.
Testing half-shutter...
Half-shutter test OK.
Testing module 'lv'...
Starting LiveView...
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.
Testing lens focus functionality...
Autofocus outside LiveView...
Focus distance: 1400
Autofocus in LiveView...
Focus distance: 655350
Focusing backward...
Focus distance: 655350
Focus motor position: 171
Focusing forward with step size 3, wait=true...
......
Focus distance: 220
Focus motor position: -308
Focusing backward with step size 3, wait=true...
.....
Focus distance: 655350
Focus motor position: 191
Focus range: 6 steps forward, 5 steps backward.
Motor steps: 479 forward, 499 backward, 20 lost.
Focusing forward with step size 3, wait=false...
................................
Focus distance: 220
Focus motor position: -308
Focusing backward with step size 3, wait=false...
.........................
Focus distance: 655350
Focus motor position: 191
Focus range: 32 steps forward, 25 steps backward.
Motor steps: 499 forward, 499 backward, 0 lost.
Focusing forward with step size 2, wait=true...
..........................
Focus distance: 220
Focus motor position: -308
Focusing backward with step size 2, wait=true...
..........................
Focus distance: 655350
Focus motor position: 191
Focus range: 26 steps forward, 26 steps backward.
Motor steps: 499 forward, 499 backward, 0 lost.
Focusing forward with step size 2, wait=false...
...................................................
Focus distance: 220
Focus motor position: -308
Focusing backward with step size 2, wait=false...
........................................................
Focus distance: 655350
Focus motor position: 191
Focus range: 51 steps forward, 56 steps backward.
Motor steps: 499 forward, 499 backward, 0 lost.
Focusing forward with step size 1, wait=true...
...
Focus distance: 220
Focus motor position: -308
Focusing backward with step size 1, wait=true...
...
Focus distance: 655350
Focus motor position: 191
Focus range: 106 steps forward, 107 steps backward.
Motor steps: 499 forward, 499 backward, 0 lost.
Focusing forward with step size 1, wait=false...
...
Focus distance: 220
Focus motor position: -303
Focusing backward with step size 1, wait=false...
...
Focus distance: 655350
Focus motor position: 191
Focus range: 156 steps forward, 154 steps backward.
Motor steps: 494 forward, 494 backward, 0 lost.
Focus test completed.
Testing exposure settings...
Camera : Canon EOS 1200D (1200D) 1.0.1
Lens : EF-S10-18mm f/4.5-5.6 IS STM
Shoot mode: 3
Shutter : ‚5 (raw 75, 0.192776s, 193ms, apex 2.374999)
Aperture : 5.6 (raw 48, f/5.599999, apex 5)
Av range : 4.7..23 (raw 44..81, f/4.7..f/23.6, apex 4.5..9.124999)
ISO : 1600 (raw 104, 1600, apex 9)
EC : 0.0 (raw 0, 0 EV)
Flash EC : 0.0 (raw 0, 0 EV)
Setting shutter to random values...
Setting ISO to random values...
if math.random(1,2) == 1 then
camera.iso.value = iso
else
camera.iso = iso
end
BTW, camera.iso and camera.iso.value, what is the difference?
To the overlays, can you please post how it should look?
[Pass] is_play_mode() => 0x1
[Pass] src = fio_malloc(size) => 0x426d0464
[Pass] dst = fio_malloc(size) => 0x42ed4474
[Pass] memcmp(dst, src, 4097) => 0x12
[Pass] edmac_memcpy(dst, src, 4097) => 0x42ed4474
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x42ed4474
[Pass] memcmp(dst, src, size) => 0xffffff60
[Pass] edmac_memcpy(dst, src, size) => 0x42ed4474
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0xffffff02
[Pass] edmac_memcpy_start(dst, src, size) => 0x42ed4474
dt => 0x31e0
[Pass] copied => 0x40240c
[Pass] copied => 0x40240c
[Pass] copied => 0x40240c
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0x50
edmac_memcpy_finish()
free(src)
free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xcbfd0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x4a0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0xf5
[Pass] tries[1] => 0xdb
[Pass] tries[2] => 0x111
[Pass] tries[3] => 0x107
[Pass] failr[0] => 0xa9
[Pass] failw[0] => 0xd2
[Pass] failr[1] => 0x7b
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xea
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
times[0] / tries[0] => 0x1d
times[1] / tries[1] => 0x1d
times[2] / tries[2] => 0x21
times[3] / tries[3] => 0x22
Cache tests finished.
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] f = FIO_CreateFile("test.dat") => 0x3
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
FIO_CloseFile(f)
[Pass] FIO_GetFileSize("test.dat", &size) => 0x0
[Pass] size => 0x20000
[Pass] p = (void*)_alloc_dma_memory(0x20000) => 0x409b076c
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x3
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
FIO_CloseFile(f)
_free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x426d0464
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x3
[Pass] FIO_SeekSkipFile(f, 0, SEEK_END) => 0x82000000
[Pass] FIO_WriteFile(f, buf, 0x10) => 0x10
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_END) => 0x81fffff0
[Pass] FIO_WriteFile(f, buf, 0x30) => 0x30
[Pass] FIO_SeekSkipFile(f, 0x20, SEEK_SET) => 0x20
[Pass] FIO_SeekSkipFile(f, 0x30, SEEK_CUR) => 0x50
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_CUR) => 0x30
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000020
[Pass] is_file("test.dat") => 0x1
[Pass] FIO_RemoveFile("test.dat") => 0x0
[Pass] is_file("test.dat") => 0x0
[Pass] SetTimerAfter(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x9fe4
msleep(900)
[Pass] timer_func => 0x0
msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x9
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0xa00c
msleep(400)
CancelTimer(timer)
[Pass] timer_func => 0x0
msleep(1500)
[Pass] timer_func => 0x0
[Pass] SetHPTimerAfterNow(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetHPTimerAfterNow(100000, timer_cbr, overrun_cbr, 0) => 0x698
msleep(90)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x16f
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0x125
[Pass] ABS((get_us_clock_value() - t0) - 110000) => 0x3f5
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x69a
msleep(80)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x3
msleep(80)
[Pass] timer_func => 0x3
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 300000) => 0x4a5
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x45c
[Pass] ABS((get_us_clock_value() - t0) - 310000) => 0x202
t0 = *(uint32_t*)0xC0242014 => 0x54868
msleep(250)
t1 = *(uint32_t*)0xC0242014 => 0x8f9e0
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x8
LoadCalendarFromRTC( &now )
s0 = now.tm_sec => 0x32
Date/time: 2017/09/19 17:07:50
msleep(1500)
LoadCalendarFromRTC( &now )
s1 = now.tm_sec => 0x34
[Pass] MOD(s1-s0, 60) => 0x2
[Pass] MOD(s1-s0, 60) => 0x2
m0 = MALLOC_FREE_MEMORY => 0x372e0
[Pass] p = (void*)_malloc(50*1024) => 0xcdd10
[Pass] CACHEABLE(p) => 0xcdd10
m1 = MALLOC_FREE_MEMORY => 0x2aad0
_free(p)
m2 = MALLOC_FREE_MEMORY => 0x372e0
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m0 = GetFreeMemForAllocateMemory() => 0x102e30
[Pass] p = (void*)_AllocateMemory(256*1024) => 0xbe1e34
[Pass] CACHEABLE(p) => 0xbe1e34
m1 = GetFreeMemForAllocateMemory() => 0xc2e20
_FreeMemory(p)
m2 = GetFreeMemForAllocateMemory() => 0x102e30
[Pass] ABS((m0-m1) - 256*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m01 = MALLOC_FREE_MEMORY => 0x372e0
m02 = GetFreeMemForAllocateMemory() => 0x102e30
[Pass] p = (void*)_alloc_dma_memory(256*1024) => 0x40be1e74
[Pass] UNCACHEABLE(p) => 0x40be1e74
[Pass] CACHEABLE(p) => 0xbe1e74
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40be1e74
_free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(24*1024*1024) => 0x426d0454
[Pass] UNCACHEABLE(p) => 0x426d0454
_shoot_free(p)
m11 = MALLOC_FREE_MEMORY => 0x372e0
m12 = GetFreeMemForAllocateMemory() => 0x102e30
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(24*1024*1024) => 0xc8668
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1800000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a88
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1800000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xc8668
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1d3c000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a88
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1d3c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(64*1024*1024) => 0xc8668
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x5
[Pass] suite->size => 0x4000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a88
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x192c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ae8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d2c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b20
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3c94000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b58
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3d28000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b90
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4000000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xc8668
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x5
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a88
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x192c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ae8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d2c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b20
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3c94000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b58
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3d28000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b90
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4700000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x16bc34
[Pass] msg => 'hi there'
[Pass] snprintf(a, sizeof(a), "foo") => 0x3
[Pass] snprintf(b, sizeof(b), "foo") => 0x3
[Pass] strcmp(a, b) => 0x0
[Pass] snprintf(a, sizeof(a), "bar") => 0x3
[Pass] snprintf(b, sizeof(b), "baz") => 0x3
[Pass] strcmp(a, b) => 0xfffffff8
[Pass] snprintf(a, sizeof(a), "Display") => 0x7
[Pass] snprintf(b, sizeof(b), "Defishing") => 0x9
[Pass] strcmp(a, b) => 0x4
[Pass] snprintf(buf, 3, "%d", 1234) => 0x2
[Pass] buf => '12'
[Pass] memcpy(foo, bar, 6) => 0x16bc00
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x16bbe0
[Pass] bar => '*****hjkl;'
bzero32(bar + 5, 5)
[Pass] bar => '****'
EngDrvOut(LCD_Palette[0], 0x1234)
[Pass] shamem_read(LCD_Palette[0]) => 0x1234
call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
call("TurnOffDisplay")
[Pass] DISPLAY_IS_ON => 0x0
call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
task_create("test", 0x1c, 0x1000, test_task, 0) => 0x18a600c4
[Pass] test_task_created => 0x1
[Pass] get_current_task_name() => 'run_test'
[Pass] task_max => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0x18a800a2
[Pass] msg_queue_post(mq, 0x1234567) => 0x0
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x0
[Pass] m => 0x1234567
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x9
[Pass] sem = sem ? sem : create_named_semaphore("test", 1) => 0x18aa0324
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] take_semaphore(sem, 500) => 0x9
[Pass] give_semaphore(sem) => 0x0
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] give_semaphore(sem) => 0x0
[Pass] rlock = rlock ? rlock : CreateRecursiveLock(0) => 0x18ac0082
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0xf
SetGUIRequestMode(1); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x1
SetGUIRequestMode(2); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x2
SetGUIRequestMode(0); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x0
[Pass] display_idle() => 0x1
GUI_Control(BGMT_PLAY, 0, 0, 0); msleep(1000);
[Pass] PLAY_MODE => 0x1
[Pass] MENU_MODE => 0x0
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(1000);
[Pass] MENU_MODE => 0x1
[Pass] PLAY_MODE => 0x0
[Pass] dialog->type => 'DIALOG'
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[Pass] MENU_MODE => 0x0
[Pass] PLAY_MODE => 0x0
SW1(1,100)
[Pass] HALFSHUTTER_PRESSED => 0x1
SW1(0,100)
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x1
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x1
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] src = fio_malloc(size) => 0x426d0464
[Pass] dst = fio_malloc(size) => 0x42ed4474
[Pass] memcmp(dst, src, 4097) => 0xffffff88
[Pass] edmac_memcpy(dst, src, 4097) => 0x42ed4474
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x42ed4474
[Pass] memcmp(dst, src, size) => 0xffffffab
[Pass] edmac_memcpy(dst, src, size) => 0x42ed4474
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0x81
[Pass] edmac_memcpy_start(dst, src, size) => 0x42ed4474
dt => 0x3132
[Pass] copied => 0x4024ac
[Pass] copied => 0x4024ac
[Pass] copied => 0x4024ac
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0xffffff93
edmac_memcpy_finish()
free(src)
free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xcc098
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x4ff
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0xfd
[Pass] tries[1] => 0x106
[Pass] tries[2] => 0xeb
[Pass] tries[3] => 0xfa
[Pass] failr[0] => 0xb5
[Pass] failw[0] => 0xe2
[Pass] failr[1] => 0x9c
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xc9
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
times[0] / tries[0] => 0x1d
times[1] / tries[1] => 0x1d
times[2] / tries[2] => 0x20
times[3] / tries[3] => 0x20
Cache tests finished.
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] f = FIO_CreateFile("test.dat") => 0x3
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
FIO_CloseFile(f)
[Pass] FIO_GetFileSize("test.dat", &size) => 0x0
[Pass] size => 0x20000
[Pass] p = (void*)_alloc_dma_memory(0x20000) => 0x409a76d4
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x3
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
FIO_CloseFile(f)
_free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x426d0464
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x3
[Pass] FIO_SeekSkipFile(f, 0, SEEK_END) => 0x82000000
[Pass] FIO_WriteFile(f, buf, 0x10) => 0x10
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_END) => 0x81fffff0
[Pass] FIO_WriteFile(f, buf, 0x30) => 0x30
[Pass] FIO_SeekSkipFile(f, 0x20, SEEK_SET) => 0x20
[Pass] FIO_SeekSkipFile(f, 0x30, SEEK_CUR) => 0x50
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_CUR) => 0x30
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000020
[Pass] is_file("test.dat") => 0x1
[Pass] FIO_RemoveFile("test.dat") => 0x0
[Pass] is_file("test.dat") => 0x0
[Pass] SetTimerAfter(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x8966
msleep(900)
[Pass] timer_func => 0x0
msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x1
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x8968
msleep(400)
CancelTimer(timer)
[Pass] timer_func => 0x0
msleep(1500)
[Pass] timer_func => 0x0
[Pass] SetHPTimerAfterNow(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetHPTimerAfterNow(100000, timer_cbr, overrun_cbr, 0) => 0x460
msleep(90)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x173
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0x126
[FAIL] ABS((get_us_clock_value() - t0) - 110000) => 0x1398f
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x462
msleep(80)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x3
msleep(80)
[Pass] timer_func => 0x3
msleep(20)
[Pass] timer_func => 0x1
[FAIL] ABS(DeltaT(timer_time, t0) - 300000) => 0x13a5d
[FAIL] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x13a19
[FAIL] ABS((get_us_clock_value() - t0) - 310000) => 0x13613
t0 = *(uint32_t*)0xC0242014 => 0xbbf8b
msleep(250)
t1 = *(uint32_t*)0xC0242014 => 0x150
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x1c
LoadCalendarFromRTC( &now )
s0 = now.tm_sec => 0x2
Date/time: 2017/09/19 17:18:02
msleep(1500)
LoadCalendarFromRTC( &now )
s1 = now.tm_sec => 0x4
[Pass] MOD(s1-s0, 60) => 0x2
[Pass] MOD(s1-s0, 60) => 0x2
m0 = MALLOC_FREE_MEMORY => 0x371a8
[Pass] p = (void*)_malloc(50*1024) => 0xcddd8
[Pass] CACHEABLE(p) => 0xcddd8
m1 = MALLOC_FREE_MEMORY => 0x2a998
_free(p)
m2 = MALLOC_FREE_MEMORY => 0x371a8
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m0 = GetFreeMemForAllocateMemory() => 0x102df0
[Pass] p = (void*)_AllocateMemory(256*1024) => 0xbf949c
[Pass] CACHEABLE(p) => 0xbf949c
m1 = GetFreeMemForAllocateMemory() => 0xc2de0
_FreeMemory(p)
m2 = GetFreeMemForAllocateMemory() => 0x102df0
[Pass] ABS((m0-m1) - 256*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m01 = MALLOC_FREE_MEMORY => 0x371a8
m02 = GetFreeMemForAllocateMemory() => 0x102df0
[Pass] p = (void*)_alloc_dma_memory(256*1024) => 0x40bf94dc
[Pass] UNCACHEABLE(p) => 0x40bf94dc
[Pass] CACHEABLE(p) => 0xbf94dc
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40bf94dc
_free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(24*1024*1024) => 0x426d0454
[Pass] UNCACHEABLE(p) => 0x426d0454
_shoot_free(p)
m11 = MALLOC_FREE_MEMORY => 0x371a8
m12 = GetFreeMemForAllocateMemory() => 0x102df0
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(24*1024*1024) => 0xc6438
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1800000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc7658
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1800000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xc6438
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1d3c000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc7658
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1d3c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(64*1024*1024) => 0xc6438
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x5
[Pass] suite->size => 0x4000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc7658
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x192c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b30
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d2c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b68
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3c94000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ba0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3d28000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8bd8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4000000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xc6438
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x5
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc7658
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x192c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b30
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d2c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b68
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3c94000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ba0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3d28000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8bd8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4700000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x199cc4
[Pass] msg => 'hi there'
[Pass] snprintf(a, sizeof(a), "foo") => 0x3
[Pass] snprintf(b, sizeof(b), "foo") => 0x3
[Pass] strcmp(a, b) => 0x0
[Pass] snprintf(a, sizeof(a), "bar") => 0x3
[Pass] snprintf(b, sizeof(b), "baz") => 0x3
[Pass] strcmp(a, b) => 0xfffffff8
[Pass] snprintf(a, sizeof(a), "Display") => 0x7
[Pass] snprintf(b, sizeof(b), "Defishing") => 0x9
[Pass] strcmp(a, b) => 0x4
[Pass] snprintf(buf, 3, "%d", 1234) => 0x2
[Pass] buf => '12'
[Pass] memcpy(foo, bar, 6) => 0x199ca0
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x199c80
[Pass] bar => '*****hjkl;'
bzero32(bar + 5, 5)
[Pass] bar => '****'
EngDrvOut(LCD_Palette[0], 0x1234)
[Pass] shamem_read(LCD_Palette[0]) => 0x1234
call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
call("TurnOffDisplay")
[Pass] DISPLAY_IS_ON => 0x0
call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
task_create("test", 0x1c, 0x1000, test_task, 0) => 0x1b2400c4
[Pass] test_task_created => 0x1
[Pass] get_current_task_name() => 'run_test'
[Pass] task_max => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0x1b2600a2
[Pass] msg_queue_post(mq, 0x1234567) => 0x0
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x0
[Pass] m => 0x1234567
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x9
[Pass] sem = sem ? sem : create_named_semaphore("test", 1) => 0x1b2801e0
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] take_semaphore(sem, 500) => 0x9
[Pass] give_semaphore(sem) => 0x0
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] give_semaphore(sem) => 0x0
[Pass] rlock = rlock ? rlock : CreateRecursiveLock(0) => 0x1b2a0096
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0xf
SetGUIRequestMode(1); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x1
SetGUIRequestMode(2); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x2
SetGUIRequestMode(0); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x0
[Pass] display_idle() => 0x1
GUI_Control(BGMT_PLAY, 0, 0, 0); msleep(1000);
[Pass] PLAY_MODE => 0x1
[Pass] MENU_MODE => 0x0
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(1000);
[Pass] MENU_MODE => 0x1
[Pass] PLAY_MODE => 0x0
[Pass] dialog->type => 'DIALOG'
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[Pass] MENU_MODE => 0x0
[Pass] PLAY_MODE => 0x0
SW1(1,100)
[Pass] HALFSHUTTER_PRESSED => 0x1
SW1(0,100)
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x1
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x1
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
assert(lens.autofocus())
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2017-9-19 17:53:59
===============================================================================
Strict mode tests...
Strict mode tests passed.
Generic tests...
arg = table:
[0] = "API_TEST.LUA"
camera = table:
shutter = table:
raw = 75
apex = 2.374999
ms = 193
value = 0.192776
aperture = table:
raw = 22
apex = 1.75
value = 1.8
min = table:
raw = 22
apex = 1.75
value = 1.8
max = table:
raw = 80
apex = 9
value = 22.6
iso = table:
raw = 104
apex = 9
value = 1600
ec = table:
raw = 0
value = 0
flash_ec = table:
raw = 0
value = 0
kelvin = 6000
mode = 3
metering_mode = 3
drive_mode = 0
model = "Canon EOS 1200D"
model_short = "1200D"
firmware = "1.0.1"
temperature = 179
state = 0
shoot = function: p
bulb = function: p
burst = function: p
wait = function: p
reboot = function: p
event = table:
pre_shoot = nil
post_shoot = nil
shoot_task = nil
seconds_clock = nil
keypress = nil
custom_picture_taking = nil
intervalometer = nil
config_save = nil
console = table:
hide = function: p
write = function: p
clear = function: p
show = function: p
lv = table:
enabled = false
paused = false
running = false
zoom = 1
info = function: p
pause = function: p
start = function: p
stop = function: p
wait = function: p
resume = function: p
lens = table:
name = "EF85mm f/1.8 USM"
focal_length = 0
focus_distance = 14080
hyperfocal = 0
dof_near = 0
dof_far = 0
af = true
af_mode = 0
autofocus = function: p
focus = function: p
display = table:
idle = true
height = 480
width = 720
print = function: p
notify_box = function: p
on = function: p
pixel = function: p
clear = function: p
off = function: p
draw = function: p
line = function: p
screenshot = function: p
load = function: p
circle = function: p
rect = function: p
key = table:
last = 10
wait = function: p
press = function: p
menu = table:
visible = false
select = function: p
block = function: p
set = function: p
close = function: p
new = function: p
open = function: p
get = function: p
movie = table:
recording = false
stop = function: p
start = function: p
dryos = table:
clock = 25
ms_clock = 25787
image_prefix = "IMG_"
dcim_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "B:/DCIM/"
path = "B:/DCIM/104CANON/"
config_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "ML/"
path = "ML/SETTINGS/"
ml_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 353
folder_number = 104
free_space = 18773408
type = "SD"
path = "B:/"
_card_ptr = userdata
shooting_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 353
folder_number = 104
free_space = 18773408
type = "SD"
path = "B:/"
_card_ptr = userdata
date = table:
day = 19
sec = 0
wday = 3
year = 2017
min = 54
month = 9
isdst = false
hour = 17
yday = 262
rename = function: p
call = function: p
remove = function: p
directory = function: p
interval = table:
time = 70
count = 0
running = false
stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:32: in function <ML/SCRIPTS/API_TEST.LUA:31>
[C]: in function 'xpcall'
ML/SCRIPTS/API_TEST.LUA:31: in function 'print_table'
ML/SCRIPTS/API_TEST.LUA:77: in function 'generic_tests'
ML/SCRIPTS/API_TEST.LUA:1155: in function 'api_tests'
ML/SCRIPTS/API_TEST.LUA:1180: in main chunktask = table:
create = function: p
yield = function: p
property = table:
Generic tests completed.
Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.
Testing menu API...
Menu tests completed.
Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/104CANON/IMG_0354.CR2: 27317690
B:/DCIM/104CANON/IMG_0354.JPG: 5265615
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/104CANON/ABC_0355.CR2: 27317188
B:/DCIM/104CANON/ABC_0355.JPG: 5280464
B:/DCIM/104CANON/ABC_0356.CR2: 27320943
B:/DCIM/104CANON/ABC_0356.JPG: 5280700
Bracketed pictures...
B:/DCIM/104CANON/IMG_0357.CR2: 24500173
B:/DCIM/104CANON/IMG_0357.JPG: 6636892
B:/DCIM/104CANON/IMG_0358.CR2: 27321389
B:/DCIM/104CANON/IMG_0358.JPG: 5280779
B:/DCIM/104CANON/IMG_0359.CR2: 20892064
B:/DCIM/104CANON/IMG_0359.JPG: 996640
Bulb picture...
Elapsed time: 11590
B:/DCIM/104CANON/IMG_0360.CR2: 14253844
B:/DCIM/104CANON/IMG_0360.JPG: 365013
Picture taking tests completed.
Testing multitasking...
Only one task allowed to interrupt...
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Multitasking tests completed.
Testing half-shutter...
Half-shutter test OK.
Testing module 'lv'...
Starting LiveView...
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.
Testing exposure settings...
Camera : Canon EOS 1200D (1200D) 1.0.1
Lens : EF85mm f/1.8 USM
Shoot mode: 3
Shutter : ‚5 (raw 75, 0.192776s, 193ms, apex 2.374999)
Aperture : 1.8 (raw 22, f/1.8, apex 1.75)
Av range : 1.8..22 (raw 22..80, f/1.8..f/22.6, apex 1.75..9)
ISO : 1600 (raw 104, 1600, apex 9)
EC : 0.0 (raw 0, 0 EV)
Flash EC : 0.0 (raw 0, 0 EV)
Setting shutter to random values...
Setting ISO to random values...
Setting aperture to random values...
Please switch to Av mode.
Setting EC to random values...
Setting Flash EC to random values...
Exposure tests completed.
Testing movie recording...
Please switch to Movie mode.
Movie recording tests completed.
Done!
I had to comment out focusing test for following reason. Lens was Canon EF 85mm f/1.8.
[...]
Offending line is:Code: [Select]assert(lens.autofocus())
Testing lens focus functionality...
Autofocus outside LiveView...
Focus distance: 1400
Autofocus in LiveView...
In both cases, it s the end of test, except the part where it states that is done (which should be included in the file if you ask me, like in LUA test).
With adding any of the disabled modules, some errors appear.
[Pass] is_play_mode() => 0x1
[Pass] src = fio_malloc(size) => 0x42908494
[Pass] dst = fio_malloc(size) => 0x4310c4a4
[Pass] memcmp(dst, src, 4097) => 0xfffffff1
[Pass] edmac_memcpy(dst, src, 4097) => 0x4310c4a4
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x4310c4a4
[Pass] memcmp(dst, src, size) => 0xffffffc6
[Pass] edmac_memcpy(dst, src, size) => 0x4310c4a4
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0xffffffcb
[Pass] edmac_memcpy_start(dst, src, size) => 0x4310c4a4
dt => 0x315f
[Pass] copied => 0x40275c
[Pass] copied => 0x40275c
[Pass] copied => 0x40275c
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0x59
edmac_memcpy_finish()
free(src)
free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xcb7f0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x4f0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0xef
[Pass] tries[1] => 0xfc
[Pass] tries[2] => 0xf8
[Pass] tries[3] => 0x105
[Pass] failr[0] => 0xa2
[Pass] failw[0] => 0xd0
[Pass] failr[1] => 0x89
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xe0
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
times[0] / tries[0] => 0x1d
times[1] / tries[1] => 0x1d
times[2] / tries[2] => 0x20
times[3] / tries[3] => 0x21
Cache tests finished.
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] f = FIO_CreateFile("test.dat") => 0x3
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
FIO_CloseFile(f)
[Pass] FIO_GetFileSize("test.dat", &size) => 0x0
[Pass] size => 0x20000
[Pass] p = (void*)_alloc_dma_memory(0x20000) => 0x409ade3c
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x3
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
FIO_CloseFile(f)
_free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x42908494
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x3
[Pass] FIO_SeekSkipFile(f, 0, SEEK_END) => 0x82000000
[Pass] FIO_WriteFile(f, buf, 0x10) => 0x10
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_END) => 0x81fffff0
[Pass] FIO_WriteFile(f, buf, 0x30) => 0x30
[Pass] FIO_SeekSkipFile(f, 0x20, SEEK_SET) => 0x20
[Pass] FIO_SeekSkipFile(f, 0x30, SEEK_CUR) => 0x50
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_CUR) => 0x30
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000020
[Pass] is_file("test.dat") => 0x1
[Pass] FIO_RemoveFile("test.dat") => 0x0
[Pass] is_file("test.dat") => 0x0
[Pass] SetTimerAfter(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x9de0
msleep(900)
[Pass] timer_func => 0x0
msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x2
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x9e06
msleep(400)
CancelTimer(timer)
[Pass] timer_func => 0x0
msleep(1500)
[Pass] timer_func => 0x0
[Pass] SetHPTimerAfterNow(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetHPTimerAfterNow(100000, timer_cbr, overrun_cbr, 0) => 0x6e0
msleep(90)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x16e
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0x128
[Pass] ABS((get_us_clock_value() - t0) - 110000) => 0x22c
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x6e2
msleep(80)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x3
msleep(80)
[Pass] timer_func => 0x3
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 300000) => 0x2e8
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x2a0
[Pass] ABS((get_us_clock_value() - t0) - 310000) => 0x227
t0 = *(uint32_t*)0xC0242014 => 0x3fc9
msleep(250)
t1 = *(uint32_t*)0xC0242014 => 0x40d13
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x1
LoadCalendarFromRTC( &now )
s0 = now.tm_sec => 0x30
Date/time: 2017/09/20 10:53:48
msleep(1500)
LoadCalendarFromRTC( &now )
s1 = now.tm_sec => 0x31
[Pass] MOD(s1-s0, 60) => 0x1
[Pass] MOD(s1-s0, 60) => 0x1
m0 = MALLOC_FREE_MEMORY => 0x30138
[Pass] p = (void*)_malloc(50*1024) => 0xd4710
[Pass] CACHEABLE(p) => 0xd4710
m1 = MALLOC_FREE_MEMORY => 0x23928
_free(p)
m2 = MALLOC_FREE_MEMORY => 0x30138
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m0 = GetFreeMemForAllocateMemory() => 0x10353c
[Pass] p = (void*)_AllocateMemory(256*1024) => 0xbe1cd0
[Pass] CACHEABLE(p) => 0xbe1cd0
m1 = GetFreeMemForAllocateMemory() => 0xc352c
_FreeMemory(p)
m2 = GetFreeMemForAllocateMemory() => 0x10353c
[Pass] ABS((m0-m1) - 256*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m01 = MALLOC_FREE_MEMORY => 0x30138
m02 = GetFreeMemForAllocateMemory() => 0x10353c
[Pass] p = (void*)_alloc_dma_memory(256*1024) => 0x40be1d10
[Pass] UNCACHEABLE(p) => 0x40be1d10
[Pass] CACHEABLE(p) => 0xbe1d10
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40be1d10
_free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(24*1024*1024) => 0x4a000074
[Pass] UNCACHEABLE(p) => 0x4a000074
_shoot_free(p)
m11 = MALLOC_FREE_MEMORY => 0x30138
m12 = GetFreeMemForAllocateMemory() => 0x10353c
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(24*1024*1024) => 0xc89e0
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1800000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a08
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1800000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xc89e0
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1f68000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a08
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1f68000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(64*1024*1024) => 0xc89e0
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x4
[Pass] suite->size => 0x4000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a08
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x16f4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42908480
[Pass] UNCACHEABLE(p) => 0x42908480
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8a68
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1af4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8aa0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x26f8000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ad8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4000000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xc89e0
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x6
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a08
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x16f4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42908480
[Pass] UNCACHEABLE(p) => 0x42908480
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8a68
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1af4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8aa0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3a5c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ad8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4660000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b10
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x46f4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b48
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x49f68100
[Pass] UNCACHEABLE(p) => 0x49f68100
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4700000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x16bc34
[Pass] msg => 'hi there'
[Pass] snprintf(a, sizeof(a), "foo") => 0x3
[Pass] snprintf(b, sizeof(b), "foo") => 0x3
[Pass] strcmp(a, b) => 0x0
[Pass] snprintf(a, sizeof(a), "bar") => 0x3
[Pass] snprintf(b, sizeof(b), "baz") => 0x3
[Pass] strcmp(a, b) => 0xfffffff8
[Pass] snprintf(a, sizeof(a), "Display") => 0x7
[Pass] snprintf(b, sizeof(b), "Defishing") => 0x9
[Pass] strcmp(a, b) => 0x4
[Pass] snprintf(buf, 3, "%d", 1234) => 0x2
[Pass] buf => '12'
[Pass] memcpy(foo, bar, 6) => 0x16bc00
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x16bbe0
[Pass] bar => '*****hjkl;'
bzero32(bar + 5, 5)
[Pass] bar => '****'
EngDrvOut(LCD_Palette[0], 0x1234)
[Pass] shamem_read(LCD_Palette[0]) => 0x1234
call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
call("TurnOffDisplay")
[Pass] DISPLAY_IS_ON => 0x0
call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
task_create("test", 0x1c, 0x1000, test_task, 0) => 0x16d800c2
[Pass] test_task_created => 0x1
[Pass] get_current_task_name() => 'run_test'
[Pass] task_max => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0x16da00a2
[Pass] msg_queue_post(mq, 0x1234567) => 0x0
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x0
[Pass] m => 0x1234567
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x9
[Pass] sem = sem ? sem : create_named_semaphore("test", 1) => 0x16dc0334
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] take_semaphore(sem, 500) => 0x9
[Pass] give_semaphore(sem) => 0x0
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] give_semaphore(sem) => 0x0
[Pass] rlock = rlock ? rlock : CreateRecursiveLock(0) => 0x16de00be
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0xf
SetGUIRequestMode(1); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x1
SetGUIRequestMode(2); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x2
SetGUIRequestMode(0); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x0
[Pass] display_idle() => 0x1
GUI_Control(BGMT_PLAY, 0, 0, 0); msleep(1000);
[Pass] PLAY_MODE => 0x1
[Pass] MENU_MODE => 0x0
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(1000);
[Pass] MENU_MODE => 0x1
[Pass] PLAY_MODE => 0x0
[Pass] dialog->type => 'DIALOG'
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[Pass] MENU_MODE => 0x0
[Pass] PLAY_MODE => 0x0
SW1(1,100)
[Pass] HALFSHUTTER_PRESSED => 0x1
SW1(0,100)
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x1
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x1
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
=========================================================
Test complete, 11854 passed, 5 failed.
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2017-9-20 10:55:29
===============================================================================
Strict mode tests...
Strict mode tests passed.
Generic tests...
arg = table:
[0] = "API_TEST.LUA"
camera = table:
shutter = table:
raw = 109
apex = 6.625
ms = 10
value = 0.010131
aperture = table:
raw = 22
apex = 1.75
value = 1.8
min = table:
raw = 22
apex = 1.75
value = 1.8
max = table:
raw = 80
apex = 9
value = 22.6
iso = table:
raw = 0
apex = 0
value = 0
ec = table:
raw = 0
value = 0
flash_ec = table:
raw = 0
value = 0
kelvin = 6000
mode = 3
metering_mode = 3
drive_mode = 0
model = "Canon EOS 1200D"
model_short = "1200D"
firmware = "1.0.1"
temperature = 171
state = 0
burst = function: p
shoot = function: p
wait = function: p
reboot = function: p
bulb = function: p
event = table:
pre_shoot = nil
post_shoot = nil
shoot_task = nil
seconds_clock = nil
keypress = nil
custom_picture_taking = nil
intervalometer = nil
config_save = nil
console = table:
clear = function: p
show = function: p
write = function: p
hide = function: p
lv = table:
enabled = false
paused = false
running = false
zoom = 1
resume = function: p
start = function: p
pause = function: p
wait = function: p
stop = function: p
info = function: p
lens = table:
name = "EF85mm f/1.8 USM"
focal_length = 0
focus_distance = 14080
hyperfocal = 0
dof_near = 0
dof_far = 0
af = true
af_mode = 257
autofocus = function: p
focus = function: p
display = table:
idle = true
height = 480
width = 720
load = function: p
pixel = function: p
notify_box = function: p
draw = function: p
rect = function: p
circle = function: p
screenshot = function: p
line = function: p
off = function: p
clear = function: p
print = function: p
on = function: p
key = table:
last = 10
wait = function: p
press = function: p
menu = table:
visible = false
get = function: p
block = function: p
open = function: p
set = function: p
new = function: p
select = function: p
close = function: p
movie = table:
recording = false
start = function: p
stop = function: p
dryos = table:
clock = 12
ms_clock = 12792
image_prefix = "IMG_"
dcim_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "B:/DCIM/"
path = "B:/DCIM/104CANON/"
config_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "ML/"
path = "ML/SETTINGS/"
ml_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 366
folder_number = 104
free_space = 18394816
type = "SD"
_card_ptr = userdata
path = "B:/"
shooting_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 366
folder_number = 104
free_space = 18394816
type = "SD"
_card_ptr = userdata
path = "B:/"
date = table:
month = 9
wday = 4
isdst = false
year = 2017
min = 55
day = 20
hour = 10
yday = 263
sec = 30
rename = function: p
directory = function: p
call = function: p
remove = function: p
interval = table:
time = 10
count = 0
running = false
stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:32: in function <ML/SCRIPTS/API_TEST.LUA:31>
[C]: in function 'globals.xpcall'
ML/SCRIPTS/API_TEST.LUA:31: in function 'globals.print_table'
ML/SCRIPTS/API_TEST.LUA:77: in function 'globals.generic_tests'
ML/SCRIPTS/API_TEST.LUA:1155: in function 'globals.api_tests'
ML/SCRIPTS/API_TEST.LUA:1180: in main chunktask = table:
yield = function: p
create = function: p
property = table:
Generic tests completed.
Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.
Testing menu API...
Menu tests completed.
Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/104CANON/IMG_0367.CR2: 23810416
B:/DCIM/104CANON/IMG_0367.JPG: 2710390
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/104CANON/ABC_0368.CR2: 23814043
B:/DCIM/104CANON/ABC_0368.JPG: 2724669
B:/DCIM/104CANON/ABC_0369.CR2: 23808578
B:/DCIM/104CANON/ABC_0369.JPG: 2721762
Bracketed pictures...
B:/DCIM/104CANON/IMG_0370.CR2: 25670783
B:/DCIM/104CANON/IMG_0370.JPG: 5388578
B:/DCIM/104CANON/IMG_0371.CR2: 23800626
B:/DCIM/104CANON/IMG_0371.JPG: 2702120
B:/DCIM/104CANON/IMG_0372.CR2: 17434352
B:/DCIM/104CANON/IMG_0372.JPG: 375754
Bulb picture...
Elapsed time: 11827
B:/DCIM/104CANON/IMG_0373.CR2: 14255761
B:/DCIM/104CANON/IMG_0373.JPG: 365013
Picture taking tests completed.
Testing multitasking...
Only one task allowed to interrupt...
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Multitasking tests completed.
Testing half-shutter...
Half-shutter test OK.
Testing module 'lv'...
Starting LiveView...
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.
Testing lens focus functionality...
Autofocus outside LiveView...
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2017-9-20 11:10:39
===============================================================================
Strict mode tests...
Strict mode tests passed.
Generic tests...
arg = table:
[0] = "API_TEST.LUA"
camera = table:
shutter = table:
raw = 75
apex = 2.374999
ms = 193
value = 0.192776
aperture = table:
raw = 22
apex = 1.75
value = 1.8
min = table:
raw = 22
apex = 1.75
value = 1.8
max = table:
raw = 80
apex = 9
value = 22.6
iso = table:
raw = 104
apex = 9
value = 1600
ec = table:
raw = 0
value = 0
flash_ec = table:
raw = 0
value = 0
kelvin = 6000
mode = 3
metering_mode = 3
drive_mode = 0
model = "Canon EOS 1200D"
model_short = "1200D"
firmware = "1.0.1"
temperature = 152
state = 0
bulb = function: p
shoot = function: p
wait = function: p
reboot = function: p
burst = function: p
event = table:
pre_shoot = nil
post_shoot = nil
shoot_task = nil
seconds_clock = nil
keypress = nil
custom_picture_taking = nil
intervalometer = nil
config_save = nil
console = table:
clear = function: p
hide = function: p
show = function: p
write = function: p
lv = table:
enabled = false
paused = false
running = false
zoom = 1
stop = function: p
info = function: p
wait = function: p
pause = function: p
resume = function: p
start = function: p
lens = table:
name = "EF85mm f/1.8 USM"
focal_length = 0
focus_distance = 14080
hyperfocal = 0
dof_near = 0
dof_far = 0
af = false
af_mode = 259
focus = function: p
autofocus = function: p
display = table:
idle = true
height = 480
width = 720
screenshot = function: p
on = function: p
print = function: p
notify_box = function: p
pixel = function: p
circle = function: p
line = function: p
rect = function: p
clear = function: p
draw = function: p
load = function: p
off = function: p
key = table:
last = 10
wait = function: p
press = function: p
menu = table:
visible = false
new = function: p
select = function: p
set = function: p
block = function: p
open = function: p
close = function: p
get = function: p
movie = table:
recording = false
stop = function: p
start = function: p
dryos = table:
clock = 17
ms_clock = 17208
image_prefix = "IMG_"
dcim_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "B:/DCIM/"
path = "B:/DCIM/104CANON/"
config_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "ML/"
path = "ML/SETTINGS/"
ml_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 373
folder_number = 104
free_space = 18228896
type = "SD"
path = "B:/"
_card_ptr = userdata
shooting_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 373
folder_number = 104
free_space = 18228896
type = "SD"
path = "B:/"
_card_ptr = userdata
date = table:
month = 9
min = 10
day = 20
isdst = false
year = 2017
yday = 263
hour = 11
wday = 4
sec = 39
remove = function: p
rename = function: p
directory = function: p
call = function: p
interval = table:
time = 10
count = 0
running = false
stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:32: in function <ML/SCRIPTS/API_TEST.LUA:31>
[C]: in function 'globals.xpcall'
ML/SCRIPTS/API_TEST.LUA:31: in function 'globals.print_table'
ML/SCRIPTS/API_TEST.LUA:77: in function 'globals.generic_tests'
ML/SCRIPTS/API_TEST.LUA:1155: in function 'globals.api_tests'
ML/SCRIPTS/API_TEST.LUA:1180: in main chunktask = table:
yield = function: p
create = function: p
property = table:
Generic tests completed.
Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.
Testing menu API...
Menu tests completed.
Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/104CANON/IMG_0374.CR2: 23241287
B:/DCIM/104CANON/IMG_0374.JPG: 1337113
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/104CANON/ABC_0375.CR2: 22612555
B:/DCIM/104CANON/ABC_0375.JPG: 716469
B:/DCIM/104CANON/ABC_0376.CR2: 22038983
B:/DCIM/104CANON/ABC_0376.JPG: 487110
Bracketed pictures...
B:/DCIM/104CANON/IMG_0377.CR2: 26115064
B:/DCIM/104CANON/IMG_0377.JPG: 6158309
B:/DCIM/104CANON/IMG_0378.CR2: 23082989
B:/DCIM/104CANON/IMG_0378.JPG: 768577
B:/DCIM/104CANON/IMG_0379.CR2: 14229183
B:/DCIM/104CANON/IMG_0379.JPG: 365013
Bulb picture...
Elapsed time: 11616
B:/DCIM/104CANON/IMG_0380.CR2: 14249369
B:/DCIM/104CANON/IMG_0380.JPG: 365013
Picture taking tests completed.
Testing multitasking...
Only one task allowed to interrupt...
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Multitasking tests completed.
Testing half-shutter...
Half-shutter test OK.
Testing module 'lv'...
Starting LiveView...
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.
Testing lens focus functionality...
Please enable autofocus.
(or, remove the lens from the camera to skip this test)
Focus test skipped.
Testing exposure settings...
Camera : Canon EOS 1200D (1200D) 1.0.1
Lens :
Shoot mode: 3
Shutter : ‚5 (raw 75, 0.192776s, 193ms, apex 2.374999)
Aperture : 0.0 (raw 0, f/0, apex 0)
Av range : 0.0..0.0 (raw 0..0, f/0..f/0, apex 0..0)
ISO : 1600 (raw 104, 1600, apex 9)
EC : 0.0 (raw 0, 0 EV)
Flash EC : 0.0 (raw 0, 0 EV)
Setting shutter to random values...
Setting ISO to random values...
Setting aperture to random values...
Please switch to Av mode.
Setting EC to random values...
Setting Flash EC to random values...
Exposure tests completed.
Testing movie recording...
Please switch to Movie mode.
Movie recording tests completed.
Done!
[Pass] is_play_mode() => 0x1
[Pass] src = fio_malloc(size) => 0x426d0464
[Pass] dst = fio_malloc(size) => 0x42ed4474
[Pass] memcmp(dst, src, 4097) => 0xffffff56
[Pass] edmac_memcpy(dst, src, 4097) => 0x42ed4474
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x42ed4474
[Pass] memcmp(dst, src, size) => 0xffffff84
[Pass] edmac_memcpy(dst, src, size) => 0x42ed4474
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0x95
[Pass] edmac_memcpy_start(dst, src, size) => 0x42ed4474
dt => 0x312d
[Pass] copied => 0x40286c
[Pass] copied => 0x40286c
[Pass] copied => 0x40286c
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0xa4
edmac_memcpy_finish()
free(src)
free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xcb7f0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x4c0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0x109
[Pass] tries[1] => 0xe5
[Pass] tries[2] => 0x103
[Pass] tries[3] => 0xf7
[Pass] failr[0] => 0xb1
[Pass] failw[0] => 0xdf
[Pass] failr[1] => 0x77
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xdd
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
times[0] / tries[0] => 0x1d
times[1] / tries[1] => 0x1d
times[2] / tries[2] => 0x20
times[3] / tries[3] => 0x20
Cache tests finished.
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[FAIL] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] f = FIO_CreateFile("test.dat") => 0x3
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
FIO_CloseFile(f)
[Pass] FIO_GetFileSize("test.dat", &size) => 0x0
[Pass] size => 0x20000
[Pass] p = (void*)_alloc_dma_memory(0x20000) => 0x409aec00
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x3
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
FIO_CloseFile(f)
_free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x426d0464
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x3
[Pass] FIO_SeekSkipFile(f, 0, SEEK_END) => 0x82000000
[Pass] FIO_WriteFile(f, buf, 0x10) => 0x10
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_END) => 0x81fffff0
[Pass] FIO_WriteFile(f, buf, 0x30) => 0x30
[Pass] FIO_SeekSkipFile(f, 0x20, SEEK_SET) => 0x20
[Pass] FIO_SeekSkipFile(f, 0x30, SEEK_CUR) => 0x50
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_CUR) => 0x30
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000020
[Pass] is_file("test.dat") => 0x1
[Pass] FIO_RemoveFile("test.dat") => 0x0
[Pass] is_file("test.dat") => 0x0
[Pass] SetTimerAfter(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x99d2
msleep(900)
[Pass] timer_func => 0x0
msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0xa
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x99f8
msleep(400)
CancelTimer(timer)
[Pass] timer_func => 0x0
msleep(1500)
[Pass] timer_func => 0x0
[Pass] SetHPTimerAfterNow(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetHPTimerAfterNow(100000, timer_cbr, overrun_cbr, 0) => 0x698
msleep(90)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x15e
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0x113
[Pass] ABS((get_us_clock_value() - t0) - 110000) => 0xc4
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x69a
msleep(80)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x3
msleep(80)
[Pass] timer_func => 0x3
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 300000) => 0x181
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x139
[Pass] ABS((get_us_clock_value() - t0) - 310000) => 0x9f
t0 = *(uint32_t*)0xC0242014 => 0x624b3
msleep(250)
t1 = *(uint32_t*)0xC0242014 => 0x9d4b4
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x9
LoadCalendarFromRTC( &now )
s0 = now.tm_sec => 0x22
Date/time: 2017/09/20 16:27:34
msleep(1500)
LoadCalendarFromRTC( &now )
s1 = now.tm_sec => 0x23
[Pass] MOD(s1-s0, 60) => 0x1
[Pass] MOD(s1-s0, 60) => 0x1
m0 = MALLOC_FREE_MEMORY => 0x301d0
[Pass] p = (void*)_malloc(50*1024) => 0xd4710
[Pass] CACHEABLE(p) => 0xd4710
m1 = MALLOC_FREE_MEMORY => 0x239c0
_free(p)
m2 = MALLOC_FREE_MEMORY => 0x301d0
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m0 = GetFreeMemForAllocateMemory() => 0x102e3c
[Pass] p = (void*)_AllocateMemory(256*1024) => 0xbe1ccc
[Pass] CACHEABLE(p) => 0xbe1ccc
m1 = GetFreeMemForAllocateMemory() => 0xc2e2c
_FreeMemory(p)
m2 = GetFreeMemForAllocateMemory() => 0x102e3c
[Pass] ABS((m0-m1) - 256*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m01 = MALLOC_FREE_MEMORY => 0x301d0
m02 = GetFreeMemForAllocateMemory() => 0x102e3c
[Pass] p = (void*)_alloc_dma_memory(256*1024) => 0x40be1d0c
[Pass] UNCACHEABLE(p) => 0x40be1d0c
[Pass] CACHEABLE(p) => 0xbe1d0c
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40be1d0c
_free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(24*1024*1024) => 0x426d0454
[Pass] UNCACHEABLE(p) => 0x426d0454
_shoot_free(p)
m11 = MALLOC_FREE_MEMORY => 0x301d0
m12 = GetFreeMemForAllocateMemory() => 0x102e3c
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(24*1024*1024) => 0xc7a30
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1800000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8af8
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1800000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xc7a30
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1d3c000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8af8
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1d3c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(64*1024*1024) => 0xc7a30
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x5
[Pass] suite->size => 0x4000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8af8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x192c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b30
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d2c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b68
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3c94000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ba0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3d28000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8bd8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4000000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xc7a30
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x5
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8af8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x192c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b30
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d2c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b68
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3c94000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ba0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3d28000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8bd8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4700000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x16bc34
[Pass] msg => 'hi there'
[Pass] snprintf(a, sizeof(a), "foo") => 0x3
[Pass] snprintf(b, sizeof(b), "foo") => 0x3
[Pass] strcmp(a, b) => 0x0
[Pass] snprintf(a, sizeof(a), "bar") => 0x3
[Pass] snprintf(b, sizeof(b), "baz") => 0x3
[Pass] strcmp(a, b) => 0xfffffff8
[Pass] snprintf(a, sizeof(a), "Display") => 0x7
[Pass] snprintf(b, sizeof(b), "Defishing") => 0x9
[Pass] strcmp(a, b) => 0x4
[Pass] snprintf(buf, 3, "%d", 1234) => 0x2
[Pass] buf => '12'
[Pass] memcpy(foo, bar, 6) => 0x16bc00
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x16bbe0
[Pass] bar => '*****hjkl;'
bzero32(bar + 5, 5)
[Pass] bar => '****'
EngDrvOut(LCD_Palette[0], 0x1234)
[Pass] shamem_read(LCD_Palette[0]) => 0x1234
call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
call("TurnOffDisplay")
[Pass] DISPLAY_IS_ON => 0x0
call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
task_create("test", 0x1c, 0x1000, test_task, 0) => 0x168000c0
[Pass] test_task_created => 0x1
[Pass] get_current_task_name() => 'run_test'
[Pass] task_max => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0x168200a2
[Pass] msg_queue_post(mq, 0x1234567) => 0x0
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x0
[Pass] m => 0x1234567
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x9
[Pass] sem = sem ? sem : create_named_semaphore("test", 1) => 0x1684032a
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] take_semaphore(sem, 500) => 0x9
[Pass] give_semaphore(sem) => 0x0
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] give_semaphore(sem) => 0x0
[Pass] rlock = rlock ? rlock : CreateRecursiveLock(0) => 0x16860086
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0xf
SetGUIRequestMode(1); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x1
SetGUIRequestMode(2); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x2
SetGUIRequestMode(0); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x0
[Pass] display_idle() => 0x1
GUI_Control(BGMT_PLAY, 0, 0, 0); msleep(1000);
[Pass] PLAY_MODE => 0x1
[Pass] MENU_MODE => 0x0
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(1000);
[Pass] MENU_MODE => 0x1
[Pass] PLAY_MODE => 0x0
[Pass] dialog->type => 'DIALOG'
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[Pass] MENU_MODE => 0x0
[Pass] PLAY_MODE => 0x0
SW1(1,100)
[Pass] HALFSHUTTER_PRESSED => 0x1
SW1(0,100)
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x1
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x1
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
=========================================================
Test complete, 11858 passed, 1 failed.
.
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2017-9-20 17:00:24
===============================================================================
Strict mode tests...
Strict mode tests passed.
Generic tests...
arg = table:
[0] = "API_TEST.LUA"
camera = table:
shutter = table:
raw = 112
apex = 7.
ms = 8
value = 0.007812
aperture = table:
raw = 22
apex = 1.75
value = 1.8
min = table:
raw = 22
apex = 1.75
value = 1.8
max = table:
raw = 80
apex = 9
value = 22.6
iso = table:
raw = 104
apex = 9
value = 1600
ec = table:
raw = 0
value = 0
flash_ec = table:
raw = 0
value = 0
kelvin = 6000
mode = 3
metering_mode = 3
drive_mode = 0
model = "Canon EOS 1200D"
model_short = "1200D"
firmware = "1.0.1"
temperature = 158
state = 0
shoot = function: p
bulb = function: p
wait = function: p
burst = function: p
reboot = function: p
event = table:
pre_shoot = nil
post_shoot = nil
shoot_task = nil
seconds_clock = nil
keypress = nil
custom_picture_taking = nil
intervalometer = nil
config_save = nil
console = table:
show = function: p
hide = function: p
clear = function: p
write = function: p
lv = table:
enabled = false
paused = false
running = false
zoom = 1
info = function: p
start = function: p
resume = function: p
wait = function: p
pause = function: p
stop = function: p
lens = table:
name = "EF85mm f/1.8 USM"
focal_length = 0
focus_distance = 14080
hyperfocal = 0
dof_near = 0
dof_far = 0
af = true
af_mode = 0
focus = function: p
autofocus = function: p
display = table:
idle = true
height = 480
width = 720
print = function: p
load = function: p
clear = function: p
on = function: p
rect = function: p
pixel = function: p
draw = function: p
screenshot = function: p
notify_box = function: p
off = function: p
circle = function: p
line = function: p
key = table:
last = 10
wait = function: p
press = function: p
menu = table:
visible = false
get = function: p
close = function: p
new = function: p
select = function: p
set = function: p
open = function: p
block = function: p
movie = table:
recording = false
stop = function: p
start = function: p
dryos = table:
clock = 19
ms_clock = 19299
image_prefix = "IMG_"
dcim_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "B:/DCIM/"
path = "B:/DCIM/105CANON/"
config_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "ML/"
path = "ML/SETTINGS/"
ml_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 426
folder_number = 105
free_space = 16899616
type = "SD"
path = "B:/"
_card_ptr = userdata
shooting_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 426
folder_number = 105
free_space = 16899616
type = "SD"
path = "B:/"
_card_ptr = userdata
date = table:
month = 9
day = 20
wday = 4
isdst = false
year = 2017
sec = 25
min = 0
hour = 17
yday = 263
remove = function: p
call = function: p
rename = function: p
directory = function: p
interval = table:
time = 10
count = 0
running = false
stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:32: in function <ML/SCRIPTS/API_TEST.LUA:31>
[C]: in function 'globals.xpcall'
ML/SCRIPTS/API_TEST.LUA:31: in function 'globals.print_table'
ML/SCRIPTS/API_TEST.LUA:77: in function 'globals.generic_tests'
ML/SCRIPTS/API_TEST.LUA:1155: in function 'globals.api_tests'
ML/SCRIPTS/API_TEST.LUA:1180: in main chunktask = table:
yield = function: p
create = function: p
property = table:
Generic tests completed.
Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.
Testing menu API...
Menu tests completed.
Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/105CANON/IMG_0427.CR2: 26470604
B:/DCIM/105CANON/IMG_0427.JPG: 4943669
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/105CANON/ABC_0428.CR2: 26489071
B:/DCIM/105CANON/ABC_0428.JPG: 4962688
B:/DCIM/105CANON/ABC_0429.CR2: 26473667
B:/DCIM/105CANON/ABC_0429.JPG: 4956692
Bracketed pictures...
B:/DCIM/105CANON/IMG_0430.CR2: 24545251
B:/DCIM/105CANON/IMG_0430.JPG: 5603438
B:/DCIM/105CANON/IMG_0431.CR2: 26469908
B:/DCIM/105CANON/IMG_0431.JPG: 4955454
B:/DCIM/105CANON/IMG_0432.CR2: 21649884
B:/DCIM/105CANON/IMG_0432.JPG: 848816
Bulb picture...
Elapsed time: 11598
B:/DCIM/105CANON/IMG_0433.CR2: 14242653
B:/DCIM/105CANON/IMG_0433.JPG: 365013
Picture taking tests completed.
Testing multitasking...
Only one task allowed to interrupt...
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Multitasking tests completed.
Testing half-shutter...
Half-shutter test OK.
Testing module 'lv'...
Starting LiveView...
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.
Testing lens focus functionality...
Autofocus outside LiveView...
Focus distance: 2880
Autofocus in LiveView...
Focus distance: 11910
Focusing backward...
Focus distance: 655350
Focus motor position: 429
Focusing forward with step size 3, wait=true...
...................
Focus distance: 850
Focus motor position: -1267
Focusing backward with step size 3, wait=true...
................
Focus distance: 655350
Focus motor position: 417
Focus range: 19 steps forward, 16 steps backward.
Motor steps: 1696 forward, 1684 backward, 12 lost.
Focusing forward with step size 3, wait=false...
................................................
Focus distance: 900
Focus motor position: -1265
Focusing backward with step size 3, wait=false...
.............................................
Focus distance: 655350
Focus motor position: 415
Focus range: 48 steps forward, 45 steps backward.
Motor steps: 1682 forward, 1680 backward, 2 lost.
Focusing forward with step size 2, wait=true...
...
Focus distance: 850
Focus motor position: -1265
Focusing backward with step size 2, wait=true...
...
Focus distance: 655350
Focus motor position: 414
Focus range: 102 steps forward, 100 steps backward.
Motor steps: 1680 forward, 1679 backward, 1 lost.
Focusing forward with step size 2, wait=false...
...
Focus distance: 850
Focus motor position: -1265
Focusing backward with step size 2, wait=false...
...
Focus distance: 655350
Focus motor position: 414
Focus range: 186 steps forward, 192 steps backward.
Motor steps: 1679 forward, 1679 backward, 0 lost.
Focusing forward with step size 1, wait=true...
...
Focus distance: 850
Focus motor position: -1264
Focusing backward with step size 1, wait=true...
...
Focus distance: 655350
Focus motor position: 413
Focus range: 421 steps forward, 424 steps backward.
Motor steps: 1678 forward, 1677 backward, 1 lost.
Focusing forward with step size 1, wait=false...
...
Focus distance: 900
Focus motor position: -1264
Focusing backward with step size 1, wait=false...
...
Focus distance: 655350
Focus motor position: 414
Focus range: 641 steps forward, 641 steps backward.
Motor steps: 1677 forward, 1678 backward, 1 lost.
Focus test completed.
Testing exposure settings...
Camera : Canon EOS 1200D (1200D) 1.0.1
Lens : EF85mm f/1.8 USM
Shoot mode: 3
Shutter : ‚5 (raw 75, 0.192776s, 193ms, apex 2.374999)
Aperture : 1.8 (raw 22, f/1.8, apex 1.75)
Av range : 1.8..22 (raw 22..80, f/1.8..f/22.6, apex 1.75..9)
ISO : 1600 (raw 104, 1600, apex 9)
EC : 0.0 (raw 0, 0 EV)
Flash EC : 0.0 (raw 0, 0 EV)
Setting shutter to random values...
Setting ISO to random values...
Setting aperture to random values...
Please switch to Av mode.
Setting EC to random values...
Setting Flash EC to random values...
Exposure tests completed.
Testing movie recording...
Please switch to Movie mode.
Movie recording tests completed.
Done!
Will NOT load on:
1200D (raw_lv_redirect_edmac, raw_lv_request, raw_lv_settings_still_valid, raw_lv_release)
Then I uncommented #define CONFIG_RAW_LIVEVIEW in /platform/1200D.101/internals.h and rebuilt ML, rebuilt silent module and rebuilt ML again. Then re-uploaded firmware.#define RAW_DEBUG 1
// #undef RAW_DEBUG /* define it to help with porting */
Guess where this image comes fromI have a feeling that I've already seen it somewhere ;)
gui_state = GUISTATE_QR;
Okay, so the troubleI would not call it trouble because as I mentioned before case when image review is off works so I think it is already a great result for 1200D port! :)
gui_uilock(UILOCK_NONE);
ResumeLiveView(); // here
return ok;
Hi, I'm new here and have a question for testers/users of ML on 1200d. Did anyone manage to record longer than 12min videos by lowering H.264 bitrate below 1.0 under movie settings?Hi,
I consider buying this camera and I need to shoot continuous videos with 1920x1080/30p for at least 20 minutes.
Thanks a lot!
Hi,
I am able to set CBR under values less then 1 (e.g. 0.5) and record something, but I can't find 1920x1080/30p. Do you mean 30 fps? If yes then there I have only 1920x25, 1920x24, 1280x50, 640x25 modes. I am not working with video staff here but can test something if needed. Probably 30p can be achieved by some haks in ML.
#define CONFIG_CAN_REDIRECT_DISPLAY_BUFFER_EASILY
#define CONFIG_CAN_REDIRECT_DISPLAY_BUFFER
#define CONFIG_DISPLAY_FILTERS
--- a/src/propvalues.c
+++ b/src/propvalues.c
@@ -239,3 +239,3 @@
hdmi_vars_update();
- #elif defined(CONFIG_60D) || defined(CONFIG_600D) || defined(CONFIG_1100D) || defined(CONFIG_50D) || defined(CONFIG_DIGIC_V)
+ #elif defined(EVF_STATE) || defined(CONFIG_50D)
lv_disp_mode = (uint8_t)buf[1];
Forgot to #include <platform/state-object.h> - can you try with that? Or otherwise make sure the branch with buf[1] is the one that gets compiled for 1200D (e.g. you should get a compiling error if you write some nonsense there).
hg merge cleaner-lvapp-hack
Thanks @dterrahe - starting a firmware update on the 1200D to the latest Canon 1.0.2:
(https://www.magiclantern.fm/forum/proxy.php?request=https%3A%2F%2Ffarm1.staticflickr.com%2F971%2F40790416705_49b75f98e7.jpg&hash=ae452142d28ebaf7eabc9c5ef802b318) (https://flic.kr/p/259vxLD)
I don't have access to a camera so I'm counting on 1200D user feedback on this. On other cameras these firmware update exercises have brought up some issues and shaken out some bugs so let's see what happens on this camera.
check-stubs.py platform/1200D.101/stubs.S platform/1200D.102/stubs.S
STUB OLD NEW DELTA
current_interrupt 0x00000674 -> 0x00000674 [0x000]
task_dispatch_hook 0x0000193c -> 0x0000193c [0x000]
current_task 0x00001a2c -> 0x00001a2c [0x000]
gui_main_struct 0x00001c18 -> 0x00001c18 [0x000]
sounddev 0x00001e50 -> 0x00001e50 [0x000]
dm_names 0x00002440 -> 0x00002440 [0x000]
task_max 0x0000295c -> 0x0000295c [0x000]
gui_timer_struct 0x00003c90 -> 0x00003c90 [0x000]
mvr_config 0x00005a14 -> 0x00005a14 [0x000]
additional_version 0x00007b98 -> 0x00007b98 [0x000]
gui_task_list 0x0000a528 -> 0x0000a528 [0x000]
cf_device 0x00014fec -> 0x00014fec [0x000]
sd_device 0x00015010 -> 0x00015010 [0x000]
LCD_Palette 0x0001bbe0 -> 0x0001bbe0 [0x000]
bmp_vram_info 0x0001d3e0 -> 0x0001d3e0 [0x000]
lv_path_struct 0x000753f0 -> 0x000753f0 [0x000]
camera_engine 0xc0220000 -> 0xc0220000 [0x000]
cstart 0xff0c1028 -> 0xff0c1028 [0x000] [!!!]
create_init_task 0xff0c7df0 -> 0xff0c7df0 [0x000] [!!!]
_malloc 0xff0c8ba4 -> 0xff0c8ba4 [0x000] [!!!]
_free 0xff0c8bfc -> 0xff0c8bfc [0x000] [!!!]
init_task 0xff0c9648 -> 0xff0c9648 [0x000] [!!!]
gui_main_task 0xff0d10d4 -> 0xff0d10d4 [0x000] [!!!]
GUI_Control 0xff0d1490 -> 0xff0d1490 [0x000] [!!!]
GUI_ChangeMode 0xff0d1590 -> 0xff0d1590 [0x000] [!!!]
gui_init_end 0xff0d1af0 -> 0xff0d1af0 [0x000] [!!!]
SRM_AllocateMemoryResourceFor1stJob 0xff0d9b14 -> 0xff0d9b14 [0x000] [!!!]
SRM_FreeMemoryResourceFor1stJob 0xff0dc3a8 -> 0xff0dc3a8 [0x000] [!!!]
StartASIFDMAADC 0xff105e10 -> 0xff105e10 [0x000] [!!!]
StopASIFDMAADC 0xff1060a8 -> 0xff1060a8 [0x000] [!!!]
StartASIFDMADAC 0xff1061d0 -> 0xff1061d0 [0x000] [!!!]
StopASIFDMADAC 0xff106444 -> 0xff106444 [0x000] [!!!]
SetASIFMode 0xff10656c -> 0xff10656c [0x000] [!!!]
SetNextASIFADCBuffer 0xff106888 -> 0xff106888 [0x000] [!!!]
SetNextASIFDACBuffer 0xff106af4 -> 0xff106af4 [0x000] [!!!]
sounddev_task 0xff108488 -> 0xff108488 [0x000] [!!!]
SoundDevActiveIn 0xff10888c -> 0xff10888c [0x000] [!!!]
sounddev_active_in 0xff10888c -> 0xff10888c [0x000] [!!!]
SoundDevShutDownIn 0xff108ae0 -> 0xff108ae0 [0x000] [!!!]
SetAudioVolumeIn 0xff108c20 -> 0xff108c20 [0x000] [!!!]
PowerAudioOutput 0xff108c54 -> 0xff108c54 [0x000] [!!!]
_prop_request_change 0xff10c0c8 -> 0xff10c0c8 [0x000] [!!!]
prop_deliver 0xff10c6a8 -> 0xff10c6a8 [0x000] [!!!]
prop_register_slave 0xff10c730 -> 0xff10c730 [0x000] [!!!]
_prop_cleanup 0xff10c850 -> 0xff10c850 [0x000] [!!!]
EnableImagePhysicalScreenParameter 0xff114874 -> 0xff114874 [0x000] [!!!]
LoadCalendarFromRTC 0xff11aee0 -> 0xff11aee0 [0x000] [!!!]
SetAudioVolumeOut 0xff11bc20 -> 0xff11bc20 [0x000] [!!!]
SetSamplingRate 0xff11c948 -> 0xff11c948 [0x000] [!!!]
PowerMicAmp 0xff11cfe8 -> 0xff11cfe8 [0x000] [!!!]
DryosDebugMsg 0xff11f5dc -> 0xff11f5dc [0x000] [!!!]
dm_set_store_level 0xff11f93c -> 0xff11f93c [0x000] [!!!]
call 0xff1204a4 -> 0xff1204a4 [0x000] [!!!]
SetHPTimerAfterNow 0xff120f28 -> 0xff120f28 [0x000] [!!!]
SetHPTimerNextTick 0xff12101c -> 0xff12101c [0x000] [!!!]
create_named_semaphore 0xff12213c -> 0xff12213c [0x000] [!!!]
take_semaphore 0xff12229c -> 0xff12229c [0x000] [!!!]
give_semaphore 0xff122384 -> 0xff122384 [0x000] [!!!]
msleep 0xff122770 -> 0xff122770 [0x000] [!!!]
task_create 0xff122824 -> 0xff122824 [0x000] [!!!]
GetSizeOfMaxRegion 0xff1233ec -> 0xff1233ec [0x000] [!!!]
GetMemoryInformation 0xff123440 -> 0xff123440 [0x000] [!!!]
_AllocateMemory 0xff12369c -> 0xff12369c [0x000] [!!!]
_FreeMemory 0xff123a2c -> 0xff123a2c [0x000] [!!!]
CreateMemoryChunk 0xff124408 -> 0xff124408 [0x000] [!!!]
GetMemoryAddressOfMemoryChunk 0xff1249a8 -> 0xff1249a8 [0x000] [!!!]
DeleteMemorySuite 0xff124a1c -> 0xff124a1c [0x000] [!!!]
CreateMemorySuite 0xff124be8 -> 0xff124be8 [0x000] [!!!]
AddMemoryChunk 0xff124e8c -> 0xff124e8c [0x000] [!!!]
GetFirstChunkFromSuite 0xff124f60 -> 0xff124f60 [0x000] [!!!]
GetNextMemoryChunk 0xff1256f4 -> 0xff1256f4 [0x000] [!!!]
dma_memcpy 0xff126cfc -> 0xff126cfc [0x000] [!!!]
AllocateMemoryResource 0xff127968 -> 0xff127968 [0x000] [!!!]
AllocateContinuousMemoryResource 0xff1279b4 -> 0xff1279b4 [0x000] [!!!]
FreeMemoryResource 0xff127acc -> 0xff127acc [0x000] [!!!]
SetTimerAfter 0xff1290bc -> 0xff1290bc [0x000] [!!!]
CancelTimer 0xff1292bc -> 0xff1292bc [0x000] [!!!]
task_trampoline 0xff12f67c -> 0xff12f67c [0x000] [!!!]
DispSensorStart 0xff134bb8 -> 0xff134bb8 [0x000] [!!!]
SetGUIRequestMode 0xff157514 -> 0xff157514 [0x000] [!!!]
gui_massive_event_loop 0xff159590 -> 0xff159590 [0x000] [!!!]
gui_change_mode 0xff15b430 -> 0xff15b430 [0x000] [!!!]
gui_local_post 0xff15bba0 -> 0xff15bba0 [0x000] [!!!]
gui_other_post 0xff15c150 -> 0xff15c150 [0x000] [!!!]
gui_change_shoot_type_post 0xff15c470 -> 0xff15c470 [0x000] [!!!]
ptpPropSetUILock 0xff1fff84 -> 0xff1fff84 [0x000] [!!!]
mvrSetDefQScale 0xff27f9d0 -> 0xff27f9d0 [0x000] [!!!]
mvrSetFullHDOptSize 0xff27fa08 -> 0xff27fa08 [0x000] [!!!]
mvrSetGopOptSizeFULLHD 0xff27fbf8 -> 0xff27fbf8 [0x000] [!!!]
mvrFixQScale 0xff27fef4 -> 0xff27fef4 [0x000] [!!!]
SetEDmac 0xff29c7bc -> 0xff29c7bc [0x000] [!!!]
ConnectWriteEDmac 0xff29c874 -> 0xff29c874 [0x000] [!!!]
ConnectReadEDmac 0xff29c938 -> 0xff29c938 [0x000] [!!!]
StartEDmac 0xff29cabc -> 0xff29cabc [0x000] [!!!]
AbortEDmac 0xff29cc0c -> 0xff29cc0c [0x000] [!!!]
RegisterEDmacCompleteCBR 0xff29ccac -> 0xff29ccac [0x000] [!!!]
UnregisterEDmacCompleteCBR 0xff29ccc0 -> 0xff29ccc0 [0x000] [!!!]
RegisterEDmacAbortCBR 0xff29ccd4 -> 0xff29ccd4 [0x000] [!!!]
UnregisterEDmacAbortCBR 0xff29cd14 -> 0xff29cd14 [0x000] [!!!]
RegisterEDmacPopCBR 0xff29cddc -> 0xff29cddc [0x000] [!!!]
UnregisterEDmacPopCBR 0xff29cdf0 -> 0xff29cdf0 [0x000] [!!!]
shamem_read 0xff29daa8 -> 0xff29daa8 [0x000] [!!!]
_EngDrvOut 0xff29dbb8 -> 0xff29dbb8 [0x000] [!!!]
_engio_write 0xff29df84 -> 0xff29df84 [0x000] [!!!]
CreateResLockEntry 0xff2a0b8c -> 0xff2a0b8c [0x000] [!!!]
LockEngineResources 0xff2a10cc -> 0xff2a10cc [0x000] [!!!]
UnLockEngineResources 0xff2a1208 -> 0xff2a1208 [0x000] [!!!]
_FIO_OpenFile 0xff2a24d0 -> 0xff2a24d0 [0x000] [!!!]
_FIO_CreateFile 0xff2a258c -> 0xff2a258c [0x000] [!!!]
_FIO_RemoveFile 0xff2a2638 -> 0xff2a2638 [0x000] [!!!]
_FIO_ReadFile 0xff2a26e0 -> 0xff2a26e0 [0x000] [!!!]
FIO_SeekSkipFile 0xff2a2790 -> 0xff2a2790 [0x000] [!!!]
_FIO_WriteFile 0xff2a2880 -> 0xff2a2880 [0x000] [!!!]
FIO_CloseFile 0xff2a2930 -> 0xff2a2930 [0x000] [!!!]
_FIO_GetFileSize 0xff2a2aac -> 0xff2a2aac [0x000] [!!!]
_FIO_RenameFile 0xff2a2fa4 -> 0xff2a2fa4 [0x000] [!!!]
_FIO_CreateDirectory 0xff2a316c -> 0xff2a316c [0x000] [!!!]
_FIO_FindFirstEx 0xff2a372c -> 0xff2a372c [0x000] [!!!]
FIO_FindNextEx 0xff2a3820 -> 0xff2a3820 [0x000] [!!!]
FIO_FindClose 0xff2a3900 -> 0xff2a3900 [0x000] [!!!]
_audio_ic_write 0xff2ad25c -> 0xff2ad25c [0x000] [!!!]
_audio_ic_read 0xff2ad554 -> 0xff2ad554 [0x000] [!!!]
BulkOutIPCTransfer 0xff2b29a8 -> 0xff2b29a8 [0x000] [!!!]
BulkInIPCTransfer 0xff2b2a78 -> 0xff2b2a78 [0x000] [!!!]
QuickOutIPCTransfer 0xff2b2bf8 -> 0xff2b2bf8 [0x000] [!!!]
RegisterRPCHandler 0xff2b3178 -> 0xff2b3178 [0x000] [!!!]
RequestRPC 0xff2b3228 -> 0xff2b3228 [0x000] [!!!]
msg_queue_create 0xff2b3c44 -> 0xff2b3c44 [0x000] [!!!]
msg_queue_receive 0xff2b3d54 -> 0xff2b3d54 [0x000] [!!!]
msg_queue_post 0xff2b3f40 -> 0xff2b3f40 [0x000] [!!!]
msg_queue_count 0xff2b3f80 -> 0xff2b3f80 [0x000] [!!!]
CreateRecursiveLock 0xff2b3ff4 -> 0xff2b3ff4 [0x000] [!!!]
AcquireRecursiveLock 0xff2b408c -> 0xff2b408c [0x000] [!!!]
ReleaseRecursiveLock 0xff2b41a0 -> 0xff2b41a0 [0x000] [!!!]
vsnprintf 0xff2b74d8 -> 0xff2b74d8 [0x000] [!!!]
TryPostStageEvent 0xff2b9360 -> 0xff2b9360 [0x000] [!!!]
TryPostStageEvent_end 0xff2b93bc -> 0xff2b93bc [0x000] [!!!]
TryPostEvent 0xff2b9cd8 -> 0xff2b9cd8 [0x000] [!!!]
TryPostEvent_end 0xff2b9d34 -> 0xff2b9d34 [0x000] [!!!]
_alloc_dma_memory 0xff2bb314 -> 0xff2bb314 [0x000] [!!!]
_free_dma_memory 0xff2bb348 -> 0xff2bb348 [0x000] [!!!]
GUI_SetRollingPitchingLevelStatus 0xff2e8d5c -> 0xff2e8d5c [0x000] [!!!]
GUI_SetLvMode 0xff2e94e8 -> 0xff2e94e8 [0x000] [!!!]
Gui_SetSoundRecord 0xff2e971c -> 0xff2e971c [0x000] [!!!]
dialog_set_property_str 0xff2f5e1c -> 0xff2f5e1c [0x000] [!!!]
ptp_register_handler 0xff369bdc -> 0xff369bdc [0x000] [!!!]
dialog_redraw 0xff3e63a4 -> 0xff3e63a4 [0x000] [!!!]
MirrorDisplay 0xff403f90 -> 0xff403f90 [0x000] [!!!]
ReverseDisplay 0xff403fc0 -> 0xff403fc0 [0x000] [!!!]
NormalDisplay 0xff403ff0 -> 0xff403ff0 [0x000] [!!!]
is_taskid_valid 0xff417ed4 -> 0xff417ed4 [0x000] [!!!]
ErrForCamera_handler 0xff4250e0 -> 0xff4250e0 [0x000] [!!!]
GUI_SetCFnForTab4 0xff42aee0 -> 0xff42aee0 [0x000] [!!!]
CancelDateTimer 0xff437180 -> 0xff437180 [0x000] [!!!]
HideUnaviFeedBack_maybe 0xff43c08c -> 0xff43c08c [0x000] [!!!]
LiveViewApp_handler 0xff440b90 -> 0xff440b90 [0x000] [!!!]
LiveViewApp_handler_BL_JudgeBottomInfoDispTimerState 0xff441218 -> 0xff441218 [0x000] [!!!]
LiveViewApp_handler_end 0xff442864 -> 0xff442864 [0x000] [!!!]
LiveViewWbApp_handler 0xff44e238 -> 0xff44e238 [0x000] [!!!]
ShootOlcApp_handler 0xff44f9dc -> 0xff44f9dc [0x000] [!!!]
PlayMain_handler 0xff45bdb4 -> 0xff45bdb4 [0x000] [!!!]
fsuDecodePartitionTable 0xff4f93e8 -> 0xff4f93ec [0x004]
ErrCardForLVApp_handler 0xff532004 -> 0xff532008 [0x004]
PlayMovieGuideApp_handler 0xff56c228 -> 0xff56c22c [0x004]
StopPlayProtectGuideApp 0xff56d4cc -> 0xff56d4d0 [0x004]
StartPlayProtectGuideApp 0xff56d8ac -> 0xff56d8b0 [0x004]
GetCFnData 0xff5fb8ec -> 0xff5fb8f0 [0x004]
SetCFnData 0xff5fbb18 -> 0xff5fbb1c [0x004]
bzero32 0xff623b5c -> 0xff623b60 [0x004]
audio_thresholds 0xff69b488 -> 0xff69b490 [0x008]
1200D.102 is up and running -- at least running in QEMU.
@Raov - The test build has the latest unified branch changes.
First test would be to activate the selftest module and run the Stubs API test.
Heard from @dterrahe who sent me the 1.0.2 firmware dump that the camera passed the selftest module Stubs API test with a perfect score.thats some real fast progress.
Also: kicked off the lua test and left it running for a while. It seemed to be doing stuff, but the display got slightly corrupted so the letters become less readable. Then I noticed it was waiting for me to switch to M. Did that and a little later I think I could make out "script finished". It printed a few more lines but a while later it shut off. So I don't know if it reported success or failure. But I attached the log generated; hope that's enough.
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-4-27 20:25:21
===============================================================================
Strict mode tests...
Strict mode tests passed.
Generic tests...
arg = table:
[0] = "API_TEST.LUA"
camera = table:
shutter = table:
raw = 0
apex = -7.
ms = 0
value = 0
aperture = table:
raw = 40
apex = 4.
value = 4.
min = table:
raw = 40
apex = 4.
value = 4.
max = table:
raw = 88
apex = 10.
value = 32
iso = table:
raw = 0
apex = 0
value = 0
ec = table:
raw = 0
value = 0
flash = true
flash_ec = table:
raw = 0
value = 0
kelvin = 5200
mode = 2
metering_mode = 3
drive_mode = 0
model = "Canon EOS 1200D"
model_short = "1200D"
firmware = "1.0.2"
temperature = 162
gui = table:
menu = false
play = false
play_photo = false
play_movie = false
qr = false
idle = true
bulb = function: p
wait = function: p
reboot = function: p
burst = function: p
shoot = function: p
event = table:
pre_shoot = nil
post_shoot = nil
shoot_task = nil
seconds_clock = nil
keypress = nil
custom_picture_taking = nil
intervalometer = nil
config_save = nil
console = table:
clear = function: p
write = function: p
show = function: p
hide = function: p
lv = table:
enabled = false
paused = false
running = false
zoom = 1
overlays = false
pause = function: p
resume = function: p
wait = function: p
info = function: p
stop = function: p
start = function: p
lens = table:
name = "EF70-300mm f/4-5.6 IS II USM"
focal_length = 70
focus_distance = 655350
hyperfocal = 64613
dof_near = 58837
dof_far = 1000000
af = true
af_mode = 0
autofocus = function: p
focus = function: p
display = table:
idle = nil
height = 480
width = 720
rect = function: p
pixel = function: p
notify_box = function: p
draw = function: p
print = function: p
off = function: p
line = function: p
clear = function: p
screenshot = function: p
on = function: p
circle = function: p
load = function: p
key = table:
last = 10
wait = function: p
press = function: p
menu = table:
visible = false
get = function: p
new = function: p
select = function: p
set = function: p
open = function: p
block = function: p
close = function: p
movie = table:
recording = false
stop = function: p
start = function: p
dryos = table:
clock = 102
ms_clock = 102453
image_prefix = "IMG_"
dcim_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "B:/DCIM/"
path = "B:/DCIM/100CANON/"
config_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "ML/"
path = "ML/SETTINGS/"
ml_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 9859
folder_number = 100
free_space = 6077536
type = "SD"
_card_ptr = userdata
path = "B:/"
shooting_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 9859
folder_number = 100
free_space = 6077536
type = "SD"
_card_ptr = userdata
path = "B:/"
date = table:
hour = 20
min = 25
sec = 23
month = 4
year = 2018
day = 27
wday = 6
isdst = false
yday = 117
rename = function: p
call = function: p
directory = function: p
remove = function: p
interval = table:
time = 10
count = 0
running = false
stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:36: in function <ML/SCRIPTS/API_TEST.LUA:35>
[C]: in function 'globals.xpcall'
ML/SCRIPTS/API_TEST.LUA:35: in function 'globals.print_table'
ML/SCRIPTS/API_TEST.LUA:81: in function 'globals.generic_tests'
ML/SCRIPTS/API_TEST.LUA:1338: in function 'globals.api_tests'
ML/SCRIPTS/API_TEST.LUA:1364: in main chunktask = table:
yield = function: p
create = function: p
property = table:
Generic tests completed.
Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.
Testing Canon GUI functions...
Start LiveView...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Resume LiveView...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Resume LiveView...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Resume LiveView...
Pause LiveView...
Resume LiveView...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Resume LiveView...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Canon GUI tests completed.
Testing ML menu API...
Menu tests completed.
Testing picture taking functions...
Please switch to M mode.
Snap simulation test...
Single picture...
B:/DCIM/100CANON/IMG_9860.CR2 not found.
B:/DCIM/100CANON/IMG_9860.JPG not found.
Some further progress:
The take_pics test failed because I had the colorspace set to adobe; that causes filenames to start with "_MG" rather than "IMG"; so the script assert fails trying to find generated files. After switching back to sRGB it runs fine.
OK, I'm running into problems in test_camera_take_pics (which also corrupts the display font somewhat so it becomes hard to read), test_keys and test_lens_focus. Attached logs restarting after each failure.
Also attaching a really crappy phone picture of the screen corruption in the take_pics test.
Digging into each of these will take a bit more time but I hope to find some this weekend.
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-4-28 06:20:18
===============================================================================
Strict mode tests...
Strict mode tests passed.
Generic tests...
arg = table:
[0] = "API_TEST.LUA"
camera = table:
shutter = table:
raw = 99
apex = 5.375
ms = 24
value = 0.024097
aperture = table:
raw = 53
apex = 5.625
value = 7.
min = table:
raw = 40
apex = 4.
value = 4.
max = table:
raw = 88
apex = 10.
value = 32
iso = table:
raw = 104
apex = 9.
value = 1600
ec = table:
raw = 0
value = 0
flash = true
flash_ec = table:
raw = 0
value = 0
kelvin = 5200
mode = 3
metering_mode = 3
drive_mode = 0
model = "Canon EOS 1200D"
model_short = "1200D"
firmware = "1.0.2"
temperature = 171
gui = table:
menu = false
play = false
play_photo = false
play_movie = false
qr = false
idle = true
shoot = function: p
bulb = function: p
reboot = function: p
wait = function: p
burst = function: p
event = table:
pre_shoot = nil
post_shoot = nil
shoot_task = nil
seconds_clock = nil
keypress = nil
custom_picture_taking = nil
intervalometer = nil
config_save = nil
console = table:
write = function: p
show = function: p
clear = function: p
hide = function: p
lv = table:
enabled = false
paused = false
running = false
zoom = 1
overlays = false
stop = function: p
pause = function: p
start = function: p
info = function: p
wait = function: p
resume = function: p
lens = table:
name = "EF70-300mm f/4-5.6 IS II USM"
focal_length = 70
focus_distance = 5260
hyperfocal = 36982
dof_near = 4635
dof_far = 6086
af = true
af_mode = 0
focus = function: p
autofocus = function: p
display = table:
idle = nil
height = 480
width = 720
rect = function: p
load = function: p
clear = function: p
screenshot = function: p
circle = function: p
notify_box = function: p
draw = function: p
line = function: p
pixel = function: p
print = function: p
on = function: p
off = function: p
key = table:
last = 10
wait = function: p
press = function: p
menu = table:
visible = false
open = function: p
new = function: p
block = function: p
select = function: p
set = function: p
get = function: p
close = function: p
movie = table:
recording = false
start = function: p
stop = function: p
dryos = table:
clock = 173
ms_clock = 173292
image_prefix = "IMG_"
dcim_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "B:/DCIM/"
path = "B:/DCIM/100CANON/"
config_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "ML/"
path = "ML/SETTINGS/"
ml_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 9862
folder_number = 100
free_space = 5998272
type = "SD"
_card_ptr = userdata
path = "B:/"
shooting_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 9862
folder_number = 100
free_space = 5998272
type = "SD"
_card_ptr = userdata
path = "B:/"
date = table:
hour = 6
isdst = false
month = 4
year = 2018
day = 28
yday = 118
wday = 7
min = 20
sec = 19
rename = function: p
call = function: p
remove = function: p
directory = function: p
interval = table:
time = 10
count = 0
running = false
stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:36: in function <ML/SCRIPTS/API_TEST.LUA:35>
[C]: in function 'xpcall'
ML/SCRIPTS/API_TEST.LUA:35: in function 'print_table'
ML/SCRIPTS/API_TEST.LUA:81: in function 'generic_tests'
ML/SCRIPTS/API_TEST.LUA:1338: in function 'api_tests'
ML/SCRIPTS/API_TEST.LUA:1364: in main chunktask = table:
yield = function: p
create = function: p
property = table:
Generic tests completed.
Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.
Testing Canon GUI functions...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Pause LiveView...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Stop LiveView...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Start LiveView...
Pause LiveView...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Resume LiveView...
Enter PLAY mode...
Exit PLAY mode...
Stop LiveView...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Resume LiveView...
Enter PLAY mode...
Exit PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Resume LiveView...
Enter MENU mode...
Exit MENU mode...
Stop LiveView...
Enter PLAY mode...
Exit PLAY mode...
Start LiveView...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Stop LiveView...
Start LiveView...
Pause LiveView...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Stop LiveView...
Enter PLAY mode...
Exit PLAY mode...
Start LiveView...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Enter MENU mode...
Canon GUI tests completed.
Testing ML menu API...
Menu tests completed.
Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/100CANON/IMG_9863.CR2 not found.
B:/DCIM/100CANON/IMG_9863.JPG not found.
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-4-28 06:41:44
===============================================================================
Module tests...
Testing multitasking...
Only one task allowed to interrupt...
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Multitasking tests completed.
Testing half-shutter...
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-4-28 07:05:50
===============================================================================
Module tests...
Testing module 'lv'...
Starting LiveView...
Overlays: Canon
Overlays: Canon
Overlays: Canon
Overlays: ML
Overlays: ML
Overlays: disabled
Overlays: Canon
Overlays: Canon
Overlays: Canon
Overlays: disabled
Overlays: ML
Overlays: disabled
Overlays: Canon
Overlays: Canon
Overlays: Canon
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.
Testing lens focus functionality...
Autofocus outside LiveView...
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-4-28 07:10:43
===============================================================================
Module tests...
Testing exposure settings...
Camera : Canon EOS 1200D (1200D) 1.0.2
Lens : EF70-300mm f/4-5.6 IS II USM
Shoot mode: 3
Shutter : Ç50 (raw 101, 0.020263s, 20ms, apex 5.625)
Aperture : Å7.0 (raw 53, f/7., apex 5.625)
Av range : Å4.0..Å32 (raw 40..88, f/4...f/32, apex 4...10.)
ISO : Ä1600 (raw 104, 1600, apex 9.)
EC : 0.0 (raw 0, 0 EV)
Flash EC : 0.0 (raw 0, 0 EV)
Setting shutter to random values...
Setting ISO to random values...
Setting aperture to random values...
Please switch to Av mode.
Setting EC to random values...
Setting Flash EC to random values...
Exposure tests completed.
Testing movie recording...
Please switch to Movie mode.
Movie recording tests completed.
Done!
The lens_focus seems to run fine, but it gets stuck waiting for something, filling the screen with dots. This happens within a loop so don't know how to skip in a useful way.
The keys test fails on:
assert(key.last == KEY.HALFSHUTTER)
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-4-28 11:23:59
===============================================================================
Module tests...
Testing lens focus functionality...
Autofocus outside LiveView...
Focus distance: 3660
Autofocus in LiveView...
Please trigger autofocus (half-shutter / AF-ON / * ).
19...18...17...16...Autofocus triggered.
Autofocus completed.
Focus distance: 1200
Focusing backward...
Focus distance: 655350
Focus motor position: 7819
Focusing forward with step size 3, wait=true...
......
Focus distance: 1200
Focus motor position: 0
Focusing backward with step size 3, wait=true...
.....
Focus distance: 655350
Focus motor position: 7819
Focus range: 6 steps forward, 5 steps backward.
Motor steps: 7819 forward, 7819 backward, 0 lost.
Focusing forward with step size 3, wait=false...
.....................................................................
Focus distance: 1200
Focus motor position: 6
Focusing backward with step size 3, wait=false...
..............................................................
Focus distance: 655350
Focus motor position: 7819
Focus range: 69 steps forward, 62 steps backward.
Motor steps: 7813 forward, 7813 backward, 0 lost.
Focusing forward with step size 2, wait=true...
..........................
Focus distance: 1200
Focus motor position: 0
Focusing backward with step size 2, wait=true...
...........................
Focus distance: 655350
Focus motor position: 7819
Focus range: 26 steps forward, 27 steps backward.
Motor steps: 7819 forward, 7819 backward, 0 lost.
Focusing forward with step size 2, wait=false...
...
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-4-28 11:19:15
===============================================================================
Module tests...
Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/100CANON/IMG_9867.CR2 not found.
B:/DCIM/100CANON/IMG_9867.JPG: 47829
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/100CANON/ABC_9868.CR2 not found.
B:/DCIM/100CANON/ABC_9868.JPG: 47638
B:/DCIM/100CANON/ABC_9869.CR2 not found.
B:/DCIM/100CANON/ABC_9869.JPG: 47470
Bracketed pictures...
B:/DCIM/100CANON/IMG_9870.CR2 not found.
B:/DCIM/100CANON/IMG_9870.JPG: 47402
B:/DCIM/100CANON/IMG_9871.CR2 not found.
B:/DCIM/100CANON/IMG_9871.JPG: 47120
B:/DCIM/100CANON/IMG_9872.CR2 not found.
B:/DCIM/100CANON/IMG_9872.JPG: 48754
Bulb picture...
Elapsed time: 11719
B:/DCIM/100CANON/IMG_9873.CR2 not found.
B:/DCIM/100CANON/IMG_9873.JPG: 48838
Picture taking tests completed.
Done!
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-4-29 08:04:15
===============================================================================
Module tests...
Testing half-shutter...
Half-shutter test OK.
Lens moving (0, 0)
Lens moving (11, 0)
etc
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-4-29 08:10:45
===============================================================================
Testing lens focus functionality...
Focus distance: 760
Autofocus in LiveView...
Please trigger autofocus (half-shutter / AF-ON / * ).
19...18...17...16...15...14...13...12...Autofocus triggered.
Autofocus completed.
Focus distance: 760
Focusing backward...
Focus distance: 655350
Focus motor position: 620
Focusing forward with step size 3, wait=true...
.............
Focus distance: 250
Focus motor position: -1273
Focusing backward with step size 3, wait=true...
..........
Focus distance: 655350
Focus motor position: 650
Focus range: 13 steps forward, 10 steps backward.
Motor steps: 1893 forward, 1923 backward, 30 lost.
Focusing forward with step size 3, wait=false...
.....................................
Focus distance: 250
Focus motor position: -1263
Focusing backward with step size 3, wait=false...
.......................................
Focus distance: 655350
Focus motor position: 655
Focus range: 37 steps forward, 39 steps backward.
Motor steps: 1913 forward, 1918 backward, 5 lost.
Focusing forward with step size 2, wait=true...
.................................................................
Focus distance: 250
Focus motor position: -1303
Focusing backward with step size 2, wait=true...
..................................................................
Focus distance: 655350
Focus motor position: 658
Focus range: 65 steps forward, 66 steps backward.
Motor steps: 1958 forward, 1961 backward, 3 lost.
Focusing forward with step size 2, wait=false...
...
Focus distance: 250
Focus motor position: -1269
Focusing backward with step size 2, wait=false...
...
Focus distance: 655350
Focus motor position: 675
Focus range: 158 steps forward, 173 steps backward.
Motor steps: 1927 forward, 1944 backward, 17 lost.
Focusing forward with step size 1, wait=true...
...
Focus distance: 250
Focus motor position: 10888
Focusing backward with step size 1, wait=true...
...
Focus distance: 300
Focus motor position: 11582
Focus range: 14282 steps forward, 273 steps backward.
Motor steps: 10213 forward, 694 backward, 10907 lost.
Focusing forward with step size 1, wait=false...
...
Focus distance: 250
Focus motor position: 11192
Focusing backward with step size 1, wait=false...
...
The lens is supposed to focus back and forth during this test; doesn't happen? The logs suggest it actually worked, to some extent, but got stuck at step size 1. Maybe it has to do with the mechanical condition of the lens.
function api_tests()
menu.close()
console.clear()
console.show()
test_log = logger("LUATEST.LOG")
-- note: each test routine must print a blank line at the end
-- strict_tests()
-- generic_tests()
printf("Module tests...\n")
-- test_io()
-- test_camera_gui()
-- test_menu()
-- test_camera_take_pics()
-- sleep(1)
-- test_multitasking()
-- test_keys()
-- test_lv()
test_lens_focus()
-- test_camera_exposure()
-- test_movie()
printf("Done!\n")
test_log:close()
key.wait()
console.hide()
end
Please enable autofocus.
(or, remove the lens from the camera to skip this test)
This test requires an electronic lens.
manual lenses can't autofocus
BTW--Did the 1200D pass all of the other tests, including the ones that come after the lens focusing test?
...if it takes many minutes. In my book, that means it doesn't work :-)
Lens | Time |
Canon EF 28-105mm f/3.5-4.5 II USM | 1:00 |
Canon EF 50mm f/1.8 STM | 3:22 |
Canon EF-S 17-55mm f/2.8 IS USM | 0:50 |
Testing module 'lv'...
LiveView is running; stopping...
Starting LiveView...
Overlays: Canon
Overlays: ML
For every single camera model available on the Experiments page (lua_fix build), please run:
- api_test.lua (upload the log)
- selftest.mo -> stubs tests (upload the log)
- bench.mo -> memory benchmarks (upload the screenshot)
- overall sanity check (for example, if you decide to take this build out and use it for a couple of hours, please report back)
So on one attempt it failed the LiveView test and on the other attempt it failed the exposure test. Hum, those are the tests immediately before and after the lens focus test.
- bench.mo -> memory benchmarks (upload the screenshot)
- overall sanity check (for example, if you decide to take this build out and use it for a couple of hours, please report back)
@Raov - hope your 1200D comes back to life with the new firmware.i hope it will, cant wait to test the new build
In many menu's, for example the benchmark menu, when descending into it, it shows top right a back arrow and Q ("<Q"). Does that mean I should be able to go back/up/out of the menu by pressing the Q key? That does not seem to work.
It spend quite a long time on the focus test again; since I didn't have that much time this morning, I half pressed the shutter once, which helped it get past that point.
...suddenly (before it had asked me to do anything) it rebooted...
That sounds like you have Continuous AF activated. More information on this post (https://www.magiclantern.fm/forum/index.php?topic=22053.msg200788#msg200788).No, I already disabled that (switched to "One Shot").
That's weird. Ok--time to clear out the Canon settings, make sure to disable Continuous AF and try the new "official" build. I'm removing the unofficial 1200D build on my downloads page (https://bitbucket.org/daniel_fort/magic-lantern/downloads/).I didn't change anything apart from the AF setting above after the last time I restored all canon and ML setting to factory/default.
Works here in QEMU. You will also need the Q key to enter most submenus (some sort of right-click).Hm, I sort of thought that's what it was supposed to do, but I don't think it has ever worked.
If it still doesn't work, enable Debug -> Show GUI events, and write down the button code.I'm getting two key codes for each press of Q: 4C and 1C
The puzzling part is that previous reports reference submenu options that could not be opened without the Q button. So, it must have worked. How did you guys open the submenus on earlier builds?!
Magic Zoom - OK, except in Full screen, then nothing happens
Your report ("I don't think it has ever worked") contradicts previous reports.I'm sorry I should have phrased that much much more carefully; I did not mean to give the wrong impression or create confusion. What I meant was that I don't think I have "ever" used the Q button for submenus. With "ever" being since I started helping Dan to get ML to run on the second hand 1200D with firmware 1.0.2 that I only bought a few months ago. I'd never used ML before, so I'm just starting to learn how it works and what it can do. What I meant was that I didn't want to imply that the Q button broke with the latest build or with the 1.0.2 firmware update, because I don't know if it used to work before. But since it seems from other reports that it did, my best guess would be the 1.0.2 update... But you probably should stop paying attention to me :-)
OK; if the "didn't work" part was meant just for the lua_fix builds from dfort, then it starts to make sense.
Movie mode: see replies #449/450. Maybe it matters if you use manual or auto exposure?
Does the auto exposure setting change the key codes? (in particular, the last digit)
/** Use a patched LiveViewApp dialog hander to hide Canon bottom bar */
#define CONFIG_LVAPP_HACK_PATCH
Isn't it working?
Where is @vanbov and @matija and some of the other users that have a 1200D and can compile?well I'm here but the camera isn't, sadly. (yet)
@dterrahe - other than the Canon overlay issue, how is the camera handling? The auto exposure in movie mode issue should be resolved with the latest update.
Sorry; it is still not working...I haven't encountered other issues...
The overlay issue is also affecting other cameras.
To test: press INFO/DISP a few times. ML overlays should appear only when Canon overlays are turned off (not both at the same time, fighting over the screen).
It almost worked -- the only exception was when camera started with Canon overlays enabled - in this case, you had to press INFO to perform a full cycling of the overlays.
The May 4 build has this commit (https://bitbucket.org/hudson/magic-lantern/commits/50e6b857f7227bc356576802b7215e5fbbf955e0) that should give a warning if you have the camera set to movie auto mode.
Quickly tested Nightly.2018May04.1200D102.
When switching on the camera, a message now flashes by to set Exposure=Manual. It is gone very fast, so I only noticed it the third time.
Cycling through the different layouts using the DISP button (is that what you meant for the 1200D; it has no INFO button) doesn't help.
#define DISPLAY_SENSOR_POWERED (*(int*)(0x2A0C+0x18)) // Look up *"ForceDisableDisplay (%d)"
#define IMGPLAY_ZOOM_POS_X MEM(0x77c9c) // Look up *"CentrePos x:%ld y:%ld"
#define IMGPLAY_ZOOM_POS_Y MEM(0x77c9c+0x4) // Look up *"CentrePos x:%ld y:%ld"
I know DISPLAY_SENSOR_POWERED does not exist in that file for 1200D, but it exists at 1300D. can anyone confirm that the current build has sticky half shutter?Yes it does, I yet have to upgrade to latest build though.
seems like development for the camera has stopped.
is anyone experiencing black holes when recording RAW video? It seems like a bug from the latest build
Hello, i have just installed the ML nightly build for my 1200D and i was wondering if someone could help me and advise me on if there is a way i can record RAW on the camera at 10bit instead of 14bit. I try to record 14bit and set my CBR to 0.5x however after 72 frames, it stops recording.
Could someone explain if there's a chance to record RAW on the 1200D for video and if so, how?
Is it hardware limited due to the fact it's an old camera or is it restricted due to limitations of my SD card?
I am not as technical as most on this forum but i am willing to learn.
Kind Regards
1200D has limited write speed, mostly it is 21 MB/s as many DIGIC 4 cameras,Bilal, this (https://kameratrollet.se/canon-write-speeds/) page claims 1200d can write at 44 MB/s. Can you comment?
@1200D users: Can you confirm/falsify a bug in "Clear overlays" for this camera?
To test this you just need to access Display tab -> Clear overlays and use setting Always. Use a lens with AF in AF mode. Do you get a clear liveview in photo mode and clear view in video mode? Or is liveview obstructed by focus box overlay?