Hi All,
Ok, here's take 2. See attached files.
The 2 avr-libc patches adds fuse.h (a different variation), changes io.h to
include fuse.h, and adds defines to iom128.h (IO header file for ATmega128).
The binutils patch is the same as before: it changes the linker scripts to
handle the new memory areas. test.c is a test case and an example of the API
usage. Remember, my patches are uuencoded if you have any problems with
them.
This API places more of the onus onto the user. They must specify a global
variable of type __fuse_t, and specifically place it into the fuse memory
using the FUSEMEM convenience macro, which somewhat mirrors the PROGMEM
macro. I say somewhat, because the implementation of the macro is a subtle
difference. The __fuse_t type is a structure containing the correct number
of fuse bytes, per device that this is being compiled for. At least this
ensures that the correct number of bytes will be put into the .fuse linker
output section.
This method at least seems to work. I couldn't get the previous idea I had
(about modifying the startup code) to work properly.
Any concrete suggestions, or feedback welcome. But I don't want to get into
philosophical discussions or splitting hairs. I plan on committing it
sometime before Friday.
Thanks,
Eric Weddington
begin 666 35-avr-libc-1.4.6-fuse-iom128.patch
M+2TM(&EN8VQU9&4O879R+VEO;3$R."YH+F]L9 DR,# W+3 Y+3(Y(#$U.C,P
M.C,[EMAIL PROTECTED] P," M,#8P, HK*RL@:6YC;'5D92]A=G(O:6]M,3(X+F@)
M,C P-RTP.2TR.2 Q-3HS-CHS,2XU,# P,# P,# @+3 V,# *0$ @+3$L-" K
M,2PU($! "B O*B!#;W!Y<FEG:'[EMAIL PROTECTED]&,I(#(P,#(L(%!E=&5R($IA;G-E;@HK
M(" @0V]P>7)I9VAT("AC*2 R,# W+"!!=&UE;"!#;W)P;W)A=&EO;@H@(" @
M06QL(')I9VAT<R!R97-E<G9E9"X*( H@(" @4F5D:7-T<FEB=71I;[EMAIL PROTECTED]
M('5S92!I;B!S;[EMAIL PROTECTED](&)I;F%R>2!F;W)M<[EMAIL PROTECTED]:"!O<B!W:71H
M;W5T"D! ("TQ,[EMAIL PROTECTED]@0$ *("-D969I;F4@(" @13)%3D0@
M(" @,'@P1D9&"B C9&5F:6YE(" @($9,05-(14Y$(#!X,49&1D8*( HK"BLO
M*B!&=7-E<R J+PHK"BLC9&5F:6YE($954T5?345-3U)97U-)6D4@,PHK"BLO
M*B!,;W<@1G5S92!">71E("HO"BLC9&5F:6YE($-+4T5,," @(" @('Y?0E8H
M,"D**R-D969I;[EMAIL PROTECTED](" @(" @?E]"[EMAIL PROTECTED](V1E9FEN92!#2U-%
M3#(@(" @("!^7T)6*#(I"BLC9&5F:6YE($-+4T5,,R @(" @('Y?0E8H,RD*
M*R-D969I;[EMAIL PROTECTED]," @(" @(" @?E]"[EMAIL PROTECTED](V1E9FEN92!3550Q(" @
M(" @("!^7T)6*#4I"BLC9&5F:6YE($)/1$5.(" @(" @('Y?0E8H-BD**R-D
M969I;[EMAIL PROTECTED]@(" @?E]"[EMAIL PROTECTED]"BLC9&5F:6YE($Q&55-%7T1%
[EMAIL PROTECTED] @)B!#2U-%3#,@)B!#2U-%3#(@)B!#2U-%3#$I"BL**PHK
[EMAIL PROTECTED]&EG:"!&=7-E($)Y=&[EMAIL PROTECTED];[EMAIL PROTECTED]/5%)35"
@(" @?E]"
[EMAIL PROTECTED](V1E9FEN92!"3T]44UHP(" @("!^7T)6*#$I"BLC9&5F:6YE($)/
M3U136C$@(" @('Y?0E8H,BD**R-D969I;[EMAIL PROTECTED](" @(" @?E]"[EMAIL PROTECTED]
M*0HK(V1E9FEN92!#2T]05" @(" @("!^7T)6*#0I"BLC9&5F:6YE(%-0245.
M(" @(" @('Y?0E8H-2D**R-D969I;[EMAIL PROTECTED](" @(" @?E]"[EMAIL PROTECTED]
M(V1E9FEN92!/0T1%3B @(" @("!^7T)6*#<I"BL**R-D969I;[EMAIL PROTECTED]
M1$5&055,5" H2E1!1T5.("[EMAIL PROTECTED])14X@)B!"3T]44UHQ("[EMAIL
PROTECTED]/5%-:,"D*
M*PHK"BLO*B!%>'1E;F1E9"!&=7-E($)Y=&[EMAIL PROTECTED];[EMAIL PROTECTED]@
M(" @(" @?E]"[EMAIL PROTECTED](V1E9FEN92!-,3 S0R @(" @("!^7T)6*#$I"BL*
M*R-D969I;[EMAIL PROTECTED]&055,5" H33$P,T,I"BL*("-E;F1I9B O*B!?
105927TE/33$R.%](7R J+PH`
`
end
begin 666 34-avr-libc-1.4.6-fuse.patch
M+2TM("]D978O;G5L; DR,# W+3 Y+3(Y(#(P.C$W.C U+CDR,[EMAIL PROTECTED] P," M
M,#8P, HK*RL@:6YC;'5D92]A=G(O9G5S92YH"3(P,#<M,#DM,CD@,3DZ-3<Z
M,C(N-C Y,S<U,# P("TP-C P"D! ("TP+# @*S$L-S@@0$ **R\J($-O<'ER
M:6=H=" H8RD@,C [EMAIL PROTECTED]@0V]R<&]R871I;VX**R @($%L;"!R:6=H
M=',@<F5S97)V960N"BL**R @(%)E9&ES=')I8G5T:6]N(&%N9"!U<V4@:6X@
M<V]U<F-E(&%N9"!B:6YA<[EMAIL PROTECTED];7,L('=I=&@@;W(@=VET:&]U= HK(" @
M;6]D:69I8V%T:6]N+"!A<F4@<&5R;6ET=&5D('!R;W9I9&5D('[EMAIL PROTECTED]&AE
M(&9O;&QO=VEN9R!C;VYD:71I;VYS(&%R92!M970Z"BL**R @("[EMAIL PROTECTED]:7-T
M<FEB=71I;VYS(&]F('-O=7)C92!C;V1E(&UU<W0@<F5T86EN('1H92!A8F]V
M92!C;W!Y<FEG:'0**R @(" @;F]T:6-E+"!T:&ES(&QI<W0@;[EMAIL PROTECTED]&ET
M:6]N<R!A;[EMAIL PROTECTED]&AE(&9O;&QO=VEN9R!D:7-C;&%I;[EMAIL PROTECTED]"BL@("
J(%)E
M9&ES=')I8G5T:6]N<R!I;B!B:6YA<[EMAIL PROTECTED];2!M=7-T(')E<')O9'5C92!T
M:&[EMAIL PROTECTED])[EMAIL PROTECTED]>7)I9VAT"BL@(" @(&YO=&[EMAIL
PROTECTED]&AI<R!L:7-T(&]F
M(&-O;F1I=&EO;G,@86YD('1H92!F;VQL;W=I;F<@9&ES8VQA:6UE<B!I;@HK
M(" @("!T:&[EMAIL PROTECTED]&]C=6UE;G1A=&EO;B!A;F0O;W(@;W1H97(@;6%T97)I86QS
M('!R;W9I9&5D('=I=&@@=&AE"BL@(" @(&1I<W1R:6)U=&EO;BX**PHK(" @
M*B!.96ET:&5R('1H92!N86UE(&]F('1H92!C;W!Y<FEG:'0@:&]L9&5R<R!N
M;W(@=&AE(&YA;65S(&]F"BL@(" @(&-O;G1R:6)U=&]R<[EMAIL PROTECTED]@=7-E
M9"!T;R!E;F1O<G-E(&]R('!R;VUO=&4@<')O9'5C=',@9&5R:79E9 HK(" @
M("!F<F]M('1H:7,@<V]F='=A<[EMAIL PROTECTED]:&]U="!S<&5C:69I8R!P<FEO<B!W
M<FET=&5N('!E<FUI<W-I;VXN"BL**R @5$A)4R!33T945T%212!)4R!04D]6
M241%1"!"[EMAIL PROTECTED]))1TA4($A/3$1%4E,@04Y$($-/3E1224)55$]2
M4R B05,@25,B"BL@($%.1"[EMAIL PROTECTED]/4B!)35!,245$(%=!4E)!
M3E1)15,L([EMAIL PROTECTED]($Y/5"!,24U)5$5$(%1/+"!42$4**R @
M24U03$E%1"!705)204Y42453($]&($U%4D-(04Y404))[EMAIL PROTECTED]
M3D534R!&3U(@02!005)424-53$%2(%!54E!/4T4**R @05)%($1)4T-,04E-
M140N($E.($Y/($5614Y4(%-(04Q,(%1(12!#3U!94DE'[EMAIL PROTECTED](@3U(@
M0T].5%))0E543U)3($)%"BL@($Q)04),12!&3U(@04Y9($1)4D5#5"[EMAIL PROTECTED]
M25)%0U0L($E.0TE$14Y404PL(%-014-)04PL([EMAIL PROTECTED](**R @
M0T].4T51545.5$E!3"!$04U!1T53("A)3D-,541)3D<L($)55"[EMAIL PROTECTED]
M251%1"[EMAIL PROTECTED])/[EMAIL PROTECTED] @4U5"4U1)5%5412!'3T]$4R!/
M4B!315)[EMAIL PROTECTED]/1B!54T4L($1!5$$L($]2(%!23T9)5%,[($]2
M($)54TE.15-3"BL@($E.5$524E505$E/[EMAIL PROTECTED]@04Y$
M($].($%.62!42$5/[EMAIL PROTECTED]@3$E!0DE,2519+"!72$542$52($E."BL@($-/
M3E1204-4+"!35%))[EMAIL PROTECTED],2519+"!/4B!43U)4("A)3D-,541)3D<@
M3D5'3$E'14Y#12!/4B!/5$A%4E=)4T4I"BL@($%225-)3D<@[EMAIL PROTECTED](%=!
M62!/[EMAIL PROTECTED]@5$A%(%5312!/1B!42$E3(%-/1E1705)%+"!%5D5.($E&($%$
[EMAIL PROTECTED]@5$A%"BL@(%!/4U-)0DE,2519($]&(%-50T@@1$%-04=%+B J
M+PHK"BLO*B D260D("HO"BL**R\J(&%V<B]F=7-E+F@@+2!&=7-E($%022 J
M+PHK"BLC:69N9&5F(%]!5E)?1E5315](7PHK(V1E9FEN92!?05927T954T5?
M2%\@,0HK"BLC:69N9&5F(%]?05-314U"3$527U\**PHK(V1E9FEN92!&55-%
M345-("!?7V%T=')I8G5T95]?*"AS96-T:6]N("@B+F9U<V4B*2DI"BL**R-I
M9B!&55-%7TU%34]265]325I%(#X@,PHK"BMT>7!E9&5F('-T<G5C= HK>PHK
M(" @('5N<VEG;F5D(&-H87(@8GET95M&55-%7TU%34]265]325I%73L**WT@
M7U]F=7-E7W0["BL**PHK(V5L:[EMAIL PROTECTED]/4EE?4TE:12 ]/2 S"BL*
M*W1Y<&5D968@<W1R=6-T"BM["BL@(" @=6YS:[EMAIL PROTECTED]<B!L;W<["BL@
M(" @=6YS:[EMAIL PROTECTED]<B!H:6=H.PHK(" @('5N<VEG;F5D(&-H87(@97AT
M96YD960["BM](%]?9G5S95]T.PHK"BLC96QI9B!&55-%7TU%34]265]325I%
M(#T](#(**PHK='EP961E9B!S=')U8W0**WL**R @("!U;G-I9VYE9"!C:&%R
M(&QO=SL**R @("!U;G-I9VYE9"!C:&%R(&[EMAIL PROTECTED]"BM](%]?9G5S95]T.PHK
M"BLC96QI9B!&55-%7TU%34]265]325I%(#T](#$**PHK='EP961E9B!S=')U
M8W0**WL**R @("!U;G-I9VYE9"!C:&%R(&)Y=&4["BM](%]?9G5S95]T.PHK
M"BLC96YD:68**PHK(V5N9&EF("\J("%?7T%34T5-0DQ%4E]?("HO"BL**R-E
M;F1I9B [EMAIL PROTECTED](&EN8VQU9&[EMAIL PROTECTED]
M;VQD"3(P,#<M,#DM,CD@,C Z,#0Z,S(N,34V,C4P,# P("TP-C P"BLK*R!I
M;F-L=61E+V%V<B]I;RYH"3(P,#<M,#DM,CD@,C Z,#8Z-#DN.34S,3(U,# P
M("TP-C P"D! ("TR.3(L-" K,CDR+#<@0$ *( H@(VEN8VQU9&4@/&%V<B]V
M97)S:[EMAIL PROTECTED]"B **R\J($EN8VQU9&[EMAIL PROTECTED](&%F=&5R(&EN9&EV:61U
[EMAIL PROTECTED]@:&5A9&5R(&9I;&5S+B J+PHK(VEN8VQU9&4@/&%V<[EMAIL PROTECTED]
M"BL*("-E;F1I9B O*B!?05927TE/7TA?("HO"BTM+2!I;F-L=61E+V%V<B]-
M86ME9FEL92YA;2YO;&0),C P-RTP.2TR,B R,#HU,3HT-"XT-#<P,# P,# @
M+3 V,# **RLK(&EN8VQU9&4O879R+TUA:V5F:6QE+F%M"3(P,#<M,#DM,C(@
M,C Z-3$Z-3,N.3 P,3(U,# P("TP-C P"D! ("TS-BPV("LS-BPW($! "B @
M(" @8W)C,38N:"!<"B @(" @9&5L87DN:"!<"B @(" @965P<F]M+F@@7 HK
M(" @(&9U<V4N:"!<"B @(" @:6YT97)R=7!T+F@@7 H@(" @(&EO+F@@7 H@
/(" @(&EO,3(P,"YH(%P*
`
end
begin 666 test.c
M"B-I;F-L=61E(#QA=G(O:6\N:#X*"E]?9G5S95]T(&9U<[EMAIL PROTECTED] ]
M( I["B @(" N;&]W([EMAIL PROTECTED]&055,5"P*(" @("YH:6=H([EMAIL PROTECTED]
M4T5?1$5&055,5"P*(" @("YE>'1E;F1E9" ]($5&55-%7T1%1D%53%0L"GT[
C"@II;G0@;6%I;BAV;VED*0I["B @("!R971U<FX@,#L*?0H`
`
end
begin 666 32-binutils-2.18-unified.patch
M+2TM(&QD+W-C<FEP='1E;7!L+V%V<BYS8RYO;&0),C P-RTP.2TQ-" P-CHS
M,CHP,BXT,S<U,# P,# @+3 V,# **RLK(&QD+W-C<FEP='1E;7!L+V%V<BYS
M8PDR,# W+3 Y+3$T(# V.C4P.C([EMAIL PROTECTED] P," M,#8P, I 0" M-"PY
M("LT+#$R($! ($]55%!55%]!4D-(*"1[05)#2'TI"B *($U%34]260H@>PHM
M("!T97AT(" @*')X*2 @([EMAIL PROTECTED]))1TE.(#T@,"[EMAIL
PROTECTED]((#T@)%1%6%1?
M3$5.1U1("BT@(&1A=&$@(" H<G<A>"[EMAIL PROTECTED]/4DE'24X@/2 P>[EMAIL
PROTECTED],# V,"P@
M3$5.1U1((#T@)$1!5$%?3$5.1U1("BT@(&5E<')O;2 H<G<A>"[EMAIL PROTECTED]/4DE'
M24X@/2 P>[EMAIL PROTECTED],# P,"[EMAIL PROTECTED](([EMAIL
PROTECTED]"BL@('1E>'0@(" @(" H<[EMAIL PROTECTED]
M(" @.B!/4DE'24X@/2 P+"!,14Y'5$@@/2 D5$585%],14Y'[EMAIL PROTECTED] @9&%T
M82 @(" @("AR=R%X*2 Z($]224=)3B ](#!X.# P,#8P+"!,14Y'5$@@/2 D
M1$%405],14Y'[EMAIL PROTECTED] @965P<F]M(" @("AR=R%X*2 Z($]224=)3B ](#!X
M.#$P,# P+"!,14Y'5$@@/2 V-$L**R @9G5S92 @(" @("AR=R%X*2 Z($]2
M24=)3B ](#!X.#(P,# P+"!,14Y'5$@@/2 Q2PHK("!L;V-K(" @(" @*')W
M([EMAIL PROTECTED]([EMAIL PROTECTED]))1TE.(#T@,'@X,S P,# L($Q%3D=42"
](#%+"BL@('-I9VYA
M='5R92 H<G<A>"[EMAIL PROTECTED]/4DE'24X@/2 P>[EMAIL PROTECTED],# P,"[EMAIL
PROTECTED]((#T@,4L*
M('T*( [EMAIL PROTECTED]/3E,*0$ @+3$Y-BPV("LQ.3DL,[EMAIL PROTECTED]
@4T5#5$E/3E,*
M(" @(" D>U)%3$]#051)3D<K(%]?965P<F]M7V5N9" ]("[EMAIL PROTECTED]"B @('T@
M)'M214Q/0T%424Y'*R ^(&5E<')O;7T*( HK(" N9G5S92 D>U)%3$]#051)
M3D<M,'[EMAIL PROTECTED]/3$]!1"DZ"BL@('L**R @("!+1450*"HH+F9U<V4I*0HK(" @
M($M%15 [EMAIL PROTECTED];&9U<V4I*0HK(" @($M%15 [EMAIL PROTECTED]:&9U<V4I*0HK("
@($M%
M15 [EMAIL PROTECTED]<V4I*0HK("!]("1[4D5,3T-!5$E.1RL@/B!F=7-E?0HK"BL@
M("YL;V-K("1[4D5,3T-!5$E.1RTP?2 H3D],3T%$*3H**R @>PHK(" @($M%
M15 [EMAIL PROTECTED];&]C:RHI*0HK("!]("1[4D5,3T-!5$E.1RL@/B!L;V-K?0HK"BL@
M("YS:6=N871U<F4@)'M214Q/0T%424Y'+3!]("A.3TQ/[EMAIL PROTECTED]("!["BL@
M(" @2T5%4"@J*"YS:6=N871U<F4J*2D**R @?2 D>U)%3$]#051)3D<K(#X@
M<VEG;F%T=7)E?0HK"B @("\J(%-T86)S(&1E8G5G9VEN9R!S96-T:6]N<RX@
M("HO"B @("YS=&%B(# @.B![("HH+G-T86(I('T*(" @+G-T86)S='(@," Z
1('[EMAIL PROTECTED]@N<W1A8G-T<[EMAIL PROTECTED]
`
end
_______________________________________________
AVR-libc-dev mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/avr-libc-dev