Hoffe es besteht noch Interesse
erstmal ein freundliches hallo hier.
seit tagen bin ich nun schon am bearbeiten der pfs.img.das tool dazu nutze ich auch und dann kommen die probleme.
ich bearbeite die firmware für das Sinus 154 DSL Basic 3.
auch dort gibt es ein paar nette dinge,die nicht dokumentiert worden sind.dann habe ich diese dinge mit ein paar veränderung am html-quelltext eingebunden und auch getestet und die daten werden auch übernommen.
und nun kommt das problem was seit tagen auftritt.es sind beim Basic 3 insgesamt 175 dateien die durch das tool pfsedit.exe die ich durch das programm wieder in das neue img-file einfügen muss.
ab und zu beendet sich das programm von ganz alleine.und wenn es dann doch sich nicht schliesst und ich die neue pfs.bin erstellen kann,dann werden alle neuen dateien erstell,die bilder in den richtigen ordner kopiert usw.
aber der hammer ist,die ganzen bilder sind zwar da aber nicht anschaubar.die dateigröße stimmt aber nichts zu sehen.
die dateien im ordner doc sind auch alle da,aber leer.der komplette quelltext der dateien ist wech.
nun meine frage,hat jemand auch diese probleme und was kann man dagegen machen.
gibt es noch ein anderes tool um die datei pfs.img zu bearbeiten?
in dem zip-file der pfsedit war noch ein paar andere dateien.auch eine pfsedit.as mit folgendem inhalt:
;
; PFS.IMG Editor by K-K
;
#define MAXPATH 512
#define MAX_ADD 128
sdim lfile,MAXPATH
sdim ifile,MAXPATH
sdim ofile,MAXPATH
sdim s,MAXPATH*2
sdim t,MAXPATH*2
sdim s2,MAXPATH*2
sdim editfile,MAXPATH,MAX_ADD
; default config
ifile = "PFS.IMG"
; make fw
target = "BRN4MG"
image_w = "web.zip"
image_c = "code.zip"
fwfile = "bbr4mg_fw.bin"
if cmdline!="" {
lfile=cmdline
peek c,lfile,0
strlen l,lfile
if c=='"' {
l-=2
strmid lfile,lfile,1,l
}
}
exist lfile : size=strsize
if size<1 {
dialog "*",16
if stat==0 : end
lfile = refstr
}
; is pkzip ?
bload lfile,s,10
memcpy c,s,4
if c==0x04034b50 {;'PK'zip
; split firmware image
s2=lfile
gosub split_fw
stop
}
strmid s2,s,0,3
if s2=="PFS" { ; PFS.IMG
ifile=lfile
gosub read
lfile=""
}
if lfile!="" : gosub exec_script
gosub make_list
pos 0,0
title "PFS Editor v1 - "+files+" files"
objsize 400
listbox _fno,200,list
button "Löschen",on_button :bt_set_delete = stat
button "Reset flag",on_button :bt_reset_flag = stat
button "Add",on_button :bt_add_file = stat
button "Save file list",on_button :bt_save_list = stat
button "Save all files",on_button :bt_save_all = stat
; button "Load image",on_button :bt_load_image = stat
button "Save image",on_button :bt_save_image = stat
_fno = -1
fno=_fno
*main
repeat
wait 10
if fno!=_fno {
fno=_fno
}
loop
*on_button
ofile=""
if stat==bt_set_delete : gosub set_delete:goto main
if stat==bt_add_file : gosub add_file:goto main
if stat==bt_reset_flag : gosub reset_flag:goto main
if stat==bt_save_all : gosub save_all:goto main
if stat==bt_save_list : gosub save_list:goto main
if stat==bt_save_image : gosub write:goto main
goto main
*set_delete
if fno>=0 {
editcmd.0.fno = 2 ;del
gosub make_list
objprm 0,list
objprm 0,fno
}
return
*reset_flag
if fno>=0 {
if editcmd.0.fno==2 :editcmd.0.fno = 0 ;del
gosub make_list
objprm 0,list
objprm 0,fno
}
return
*add_file
dialog "*",16
if stat==0 :return
editfile.editcnt=refstr
p=0
repeat
peek c,editfile.editcnt,cnt
if c==0 :break
if c=='\\'
=cnt
loop
peek s2,editfile.editcnt,p
s2="www\\doc"+s2
screen 2,320,100
gsel 2,2
cls 1
pos 4,4
mes "Name:"
input s2,300
pos 160,60
button "OK",add_file_ok
pos 240,60
button "Cancel",add_file_cancel
stop
*add_file_ok
gosub get_index
if ret<0 {
poke finfo,files*52,s2
strlen l,s2
memcpy finfo,s2,3,files*52+l+1,l-3
editcmd.0.files = 1 ; add
editcmd.1.files = editcnt
files++
} else {
editcmd.0.ret = 1 ; add
editcmd.1.ret = editcnt
}
editcnt++
*add_file_cancel
cls
gsel 2,-1
gsel 0
gosub make_list
fno=files-1
objprm 0,list
objprm 0,fno
return
*get_index
ret = -1
repeat files
memcpy t,finfo,52,0,cnt*52
if t==s2 : ret=cnt:break
loop
return
*make_list
list=""
repeat files
peek s,finfo,cnt*52
t=" "
if editcmd.0.cnt == 1 : t="A "
if editcmd.0.cnt == 2 : t="D "
list+=t+s+"\n"
loop
return
*save_all
iheadlen=orgfiles*52+16
repeat files
wpeek l,finfo,cnt*52+48
wpeek h,finfo,cnt*52+50
sz = h<<16+l
if editcmd.0.cnt==1 {
n=editcmd.1.cnt
exist editfile.n
if strsize>0 {
sz=strsize
sdim buf,sz+64
bload editfile.n,buf,sz
}
} else {
wpeek l,finfo,cnt*52+44
wpeek h,finfo,cnt*52+46
sdim buf,sz+64
bload ifile,buf,sz,h<<16+l + iheadlen
}
peek s,finfo,cnt*52
repeat
peek c,s,cnt
if c==0 : break
if c=='\\' {
strmid s2,s,0,cnt
dirlist t,s2,5
if stat==0 :mkdir s2
}
loop
if sz :bsave s,buf,sz
loop
return
*save_list
dialog "txt",17,"list"
if stat=0 :return
list=""
repeat files
peek s,finfo,cnt*52
list+=s+"\n"
loop
strlen l,list
bsave refstr,list,l
return
*exec_script
lbuf=""
notesel lbuf
noteload lfile
notemax m
editcnt=0
repeat m
noteget s,cnt
if s=="" :continue
peek c,s,0
if c==';' :continue
getstr s2,s,0,' '
if s2=="import" {
getstr ifile,s,strsize,':'
gosub read
continue
}
if s2=="write" {
getstr ofile,s,strsize,':'
gosub write
continue
}
strlen l,s
poke s,l+1,0
p=strsize
if s2=="add" {
getstr s2,s,p,':'
if stat==':' :getstr t,s,p+strsize,0 :else: t=s2
editfile.editcnt=t
gosub get_index
if ret<0 {
poke finfo,files*52,s2
strlen l,s2
memcpy finfo,s2,3,files*52+l+1,l-3
editcmd.0.files = 1 ; add
editcmd.1.files = editcnt
files++
} else {
editcmd.0.ret = 1 ; add
editcmd.1.ret = editcnt
}
editcnt++
continue
}
if s2=="del" {
getstr s2,s,p,0
gosub get_index
if ret<0 {
mes "del: file not found : " + s2
} else {
editcmd.0.ret = 2 ; del
}
continue
}
if s2=="exec" {
peek s2,s,p
exec s2,16
continue
}
; for split fw image
if s2=="split" {
peek s2,s,p
gosub split_fw
continue
}
; for make f.w. image
if s2=="target" {
peek target,s,p
continue
}
if s2=="web" {
peek image_w,s,p
continue
}
if s2=="code" {
getstr image_c,s,p,0
continue
}
if s2=="make" {
getstr fwfile,s,p,0
gosub make_fw
stop
}
loop
return
*read
if ifile=="" {
dialog "bin",16,"PFS image"
if stat==0 : return
ifile = refstr
}
exist ifile
size = strsize
if size<16 : end
sdim head,16
bload ifile,head,16
if head != "PFS/0.9" :mes "ERR":stop
wpeek files,head,14
sdim finfo,files + MAX_ADD *52
sdim list,files + MAX_ADD *32
bload ifile,finfo,files*52,16
dim editcmd,2,files + MAX_ADD
orgfiles=files
return
*write
if ofile=="" {
dialog "bin",17,"PFS image"
if stat==0 : return
ofile = refstr
}
title "writing..."
color 255,255,255
boxf
color 0,0,0
pos 410,0
mes "Start writing..."
bsave ofile,head,16
iheadlen=orgfiles*52+16
data=0
files2=0
repeat files
if editcmd.0.cnt==2 :continue ;delete
memcpy s,finfo,52,0,cnt*52
wpoke s,44,data
wpoke s,46,data>>16
if editcmd.0.cnt==1 {
n=editcmd.1.cnt
exist editfile.n
sz=strsize
if sz<0 :dialog "ERR! can't read:"+editfile.n:return
mes "ok: "+ editfile.n
wpoke s,48,sz
wpoke s,50,sz<<16
data+=sz
}else {
wpeek l,s,48
wpeek h,s,50
data+=h<<16+l
}
bsave ofile,s,52,files2*52+16
files2++
loop
mes "Total data bytes: "+data
wpoke head,14,files2
bsave ofile,head,16,0
p=files2*52+16
repeat files
if editcmd.0.cnt==2 :continue ;delete
wpeek l,finfo,cnt*52+48
wpeek h,finfo,cnt*52+50
sz = h<<16+l
if editcmd.0.cnt==1 {
n=editcmd.1.cnt
exist editfile.n
sz=strsize
sdim buf,sz+64
bload editfile.n,buf,sz
} else {
wpeek l,finfo,cnt*52+44
wpeek h,finfo,cnt*52+46
sdim buf,sz+64
bload ifile,buf,sz,h<<16+l + iheadlen
}
if sz :bsave ofile,buf,sz,p
p+=sz
loop
mes "Write complete!"
title "write complete!"
return
*split_fw
if s2=="" {
dialog "bin",16,"firmware image"
if stat==0 : return
s2=refstr
}
; split firmware image
exist s2 : size=strsize
if size<1 :mes "not found : "+s2
sdim buf,size
bload s2,buf,size
peek target,buf,size-10
mes "target "+target
p=0
sp=0
fcnt=0
repeat
p+=0x10000
if p>=size :break
wpeek l,buf,p-0x10
wpeek h,buf,p-0x0e
if h<<16+l != -1 :continue
wpeek l,buf,p-0x08
wpeek h,buf,p-0x06
if h<<16+l != 0x12345678 :continue
wpeek l,buf,p-0x0c
wpeek h,buf,p-0x0a
sz = h<<16+l
sdim buf2,sz
memcpy buf2,buf,sz,0,sp
if fcnt==0
file=image_w
if fcnt==1
file=image_c
if fcnt>1
file="unknown"+fcnt+".zip":mes "ERR: find too many section"
bsave ofile,buf2,sz
mes "save: "+ofile
sp=p
fcnt++
mes "ok"
loop
return
*make_fw
fw_size = 0x40000 + 0x80000 + 10
alloc buf,fw_size
memset buf,0xff,fw_size-10
mes "Please wait..."
gosub make_crctable2
magic=0x12345678
exist image_w
size=strsize
alloc buf2,size
bload image_w,buf2,size
gosub calc_crc2
memcpy buf,buf2,size,0
memcpy buf,size,4,0x3fff4
memcpy buf,magic,4,0x3fff8
memcpy buf,crc,4,0x3fffc
exist image_c
size=strsize
alloc buf2,size
bload image_c,buf2,size
gosub calc_crc2
memcpy buf,buf2,size,0x40000
memcpy buf,size,4,0xbfff4
memcpy buf,magic,4,0xbfff8
memcpy buf,crc,4,0xbfffc
poke buf,fw_size-10,target
mes "write "+ fwfile
bsave fwfile,buf,fw_size
mes "ok"
return
; ‚b¼¾¼ê‚É‚æ‚é�Å�VƒAƒ‹ƒSƒ¦ƒYƒ¤´–“T ‚©‚ç
/*
*make_crctable
dim crctable,256
repeat 256
r = cnt<<24
repeat 8
if r&0x80000000 :r = r<<1 ^ 0x04C11DB7 :else: r = r<<1
loop
crctable.cnt=r
loop
return
*calc_crc
crc=0xffffffff
repeat size
peek c,buf2,cnt
c=crc>>24&0xff^c
crc = crc>>8&0x00ffffff ^ crctable.c
loop
crc=crc^0xffffffff
return
*/
*make_crctable2
dim crctable,256
repeat 256
r = cnt
repeat 8
if r&1 :r = r>>1&0x7fffffff ^ 0xEDB88320 :else: r = r>>1&0x7fffffff
loop
crctable.cnt=r
loop
return
*calc_crc2
crc=0xffffffff
repeat size
peek c,buf2,cnt
c=crc&0xff^c
crc = crc>>8&0x00ffffff ^ crctable.c
loop
crc=crc^0xffffffff
return
--------
was kann das für eine datei sein und was kann ich mit dieser anstellen.es scheint eine scriptfile zu sein,denn die abfragen und die codes scheinen identisch mit der pfsedit.exe zu sein.aber ich kann diese löschen und dennoch kann man mit der pfsedit.exe arbeiten.mehr schlecht als recht zumindest.
wäre über ein paar antworten sehr erfreut.
mfg kai