embeded/80512009. 4. 21. 17:51
신기한 현상을 발견했다.
코드의 위치에 따라 용량이 상당히 많이 변한다는 사실!

for(idx = 0; idx < len; idx++)
{
	tempUnicode = input[idx];
	if(0x0020 <= tempUnicode && tempUnicode < 0x0080)	res = (char)(tempUnicode & 0x00FF);
	else if(tempUnicode == 0x00E1)						res = 0x80;
	else if(tempUnicode == 0x00E0)						res = 0x81;
	...
	else if(0x0400 < tempUnicode && tempUnicode <= 0x045F)
	{
		switch(tempUnicode)
		{
			case 0x0401:	res = 192 +	0;	break;
			case 0x0402:	res = 192 +	1;	break;
			...
		}
	}
	else												res = ' ';
}

Program Size: data=187.7 xdata=0 code=9505

for(idx = 0; idx < len; idx++)
{
	tempUnicode = input[idx];
	if(0x0020 <= tempUnicode && tempUnicode < 0x0080)	res = (char)(tempUnicode & 0x00FF);
	else if(0x0400 < tempUnicode && tempUnicode <= 0x045F)
	{
		switch(tempUnicode)
		{
			case 0x0401:	res = 192 +	0;	break;
			case 0x0402:	res = 192 +	1;	break;
			...
		}
	}
	else if(tempUnicode == 0x00E1)						res = 0x80;
	else if(tempUnicode == 0x00E0)						res = 0x81;
	...
	else												res = ' ';
}

Program Size: data=189.7 xdata=0 code=9698

바뀐건, else if() 내부에 switch()가 있는 경우의 위치가 바뀐 경우이다.
속도 최적화를 위해 빨리빠져 나갈수 있도록 위로 옮겨 주었떠니 용량이 무려!!!
193 바이트나 늘어났다.. OTL

아마도..
코드사이즈가 커지면서 MOV대신 MOVX 라던가..
이런식으로 명령어에 넣어야 하는 주소의 크기가 달라지면서 발생하는 문제가 아닐까 생각이 된다.
Posted by 구차니
embeded/80512009. 4. 21. 17:36
if(tempUnicode == 0x00E0)        output[out_idx] = 0x80;
else if(tempUnicode == 0x00E0) output[out_idx] = 0x80;
else if(tempUnicode == 0x00E0) output[out_idx] = 0x80;
...
else if(tempUnicode == 0x00E0) output[out_idx] = 0x80;
// 대략 128개

이녀석을 컴파일 하면
Program Size: data=189.7 xdata=0 code=10418

if(tempUnicode == 0x00E0)        res = 0x80;
else if(tempUnicode == 0x00E0) res = 0x80;
else if(tempUnicode == 0x00E0) res = 0x80;
...
else if(tempUnicode == 0x00E0) res = 0x80;
// 대략 128개

이녀석을 컴파일 하면
Program Size: data=187.7 xdata=0 code=9518


별거 아닌 코드이지만, 900byte 차이가 난다.
결론. 8051에서는 배열사용을 자제하자(switch / if-else 문처럼 한번의 액션에 분기되는 거라면)
Posted by 구차니
개소리 왈왈2009. 4. 21. 14:40
구글에서 강동도서관을 검색하니 딸려 나와서 한번 가보게 되었는데 의외로 마음에 들어서 후딱 가입을 했다.
근데.. 가입을 하고 보니.. 난 강동구 도서관은 가입되어 있는디 -ㅁ-?
아마.. 두개는 별도로 운영되어 지고 있나 보다.. OTL

1. 강동구 전자도서관의 첫 페이지 입니다. 물론 실명을 감추기 위해 약간의 편집을 했습니다 ^^;

2. 원하는 책을 누르면 책 소개가 나옵니다. 아래에서 대출하기나 책읽기를 누르면

3. 이 창이 뜨면서 ActiveX를 강요합니다.

4. 착한 유저는 ActiveX를 설치하시고, 나쁜 유저는 ActiveX를 설치안하고 안보시면 됩니다(응?)
   아무튼 ActiveX를 설치하고 나면 아래와 같이 책 내용을 보실 수 있습니다.

아쉬운 점은, XML 방식만 봐서 그런지 모르겠지만, 페이지 단위가 아닌 단순하게 웹 페이지에 엄청난 장문으로 작성된
느낌을 받는 다는 점인데.. 전자책의 라이센스문제로 아마.. 그렇게 한것 같지만.. 책 읽는 독자로서 pdf로 그냥 단순 스캔한
그러한 조판방식도 환영받을텐데.. 왜 이렇게 번거롭게 했을까 하는 아쉬움이 듭니다.


주의사항
1. ActiveX 도배이므로 IE 전용입니다.
2. 책 읽기를 누르는 순간 대여가 됩니다.  
   * 대출하신 책은 반납일의 오후 11시 50분에 자동 반납되며, 사전 반납도 가능합니다.
   라고 쓰여 있습니다. 반납은 신경 안써도 될 듯 합니다.
3. 책 대여는 5권까지 가능합니다만, 바로 반납하면 됩니다.  
4. 당연한지는 모르겠지만, 강동구 전자도서관은 강동구 시민만 사용이 가능합니다.

[링크 : http://elib.gangdong.go.kr/main/main.asp]



사족 : 아.. 무참히 깨어진 홈페이지여~ Firefox에서 열면 이런 만행을 보입니다..
사족2: 로그인은 되는척 하다가 안됩니다. ㄱ-


'개소리 왈왈' 카테고리의 다른 글

출근길의 풍경  (0) 2009.04.23
블로그 이미지 다이어트를 했습니다!  (4) 2009.04.23
12시간을 기절했습니다 -ㅁ-  (2) 2009.04.21
근황 - 좀비모드  (4) 2009.04.18
KT 애들 희한해~  (4) 2009.04.17
Posted by 구차니
다 큰 어른이!!
게다가 성인에!!
직딩인데!!
왜 저런짓을 하면서 피는거지 -ㅁ-!






[링크 : http://www.china1.co.kr/bbs/board.php?bo_table=happy&wr_id=117&page=30]
Posted by 구차니
니네가.. 소통을 아니?




다음빠도 네이버까도 아니지만, 다음에서 블로그 운영하는 정부대표 블로그인데..
다음회원에게만 댓글 허용이라.. 결국은 안좋은 말 적지 말라는 무언의 압박인가?

[링크 : http://blog.daum.net/hellopolicy]
Posted by 구차니
개소리 왈왈2009. 4. 21. 10:08
집에 도착하니 7:30 PM
밥먹고 누워서 데굴데굴 하다가 8:00 PM에 잠들고
일어 나보니 7:40 AM..


그냥 반올림해서 12시간 코오~

그렇다고 해서 개운한것도 아니고.. 똑같은 하루 똑같이 반복되는 일상.
비록, 누군가는 이러한 평범한 반복을 꿈꾸며, 먼곳으로 떠나간다고 하지만...
살아있는 사람으로서는 다른 하루를 꿈꾸게 되는데..


아무튼 월요일은 월요일이구나 싶은 건...
퇴근전 256 hit 였는데...


이번주도 활기차게!! 대학 숙제 블로그!! OTL

'개소리 왈왈' 카테고리의 다른 글

블로그 이미지 다이어트를 했습니다!  (4) 2009.04.23
강동구 전자도서관  (4) 2009.04.21
근황 - 좀비모드  (4) 2009.04.18
KT 애들 희한해~  (4) 2009.04.17
블로그 대문 사진을 바꿀까..  (2) 2009.04.16
Posted by 구차니
embeded/AVR (ATmega,ATtiny)2009. 4. 20. 00:37
패러럴이면 STK-200 호환
USB면 STK-500 호환이라고 한다.


Valid programmers are:
  c2n232i  = serial port banging, reset=dtr sck=!rts mosi=!txd miso=!cts [/usr/local/etc/avrdude.conf:834]
  dasa3    = serial port banging, reset=!dtr sck=rts mosi=txd miso=cts [/usr/local/etc/avrdude.conf:821]
  dasa     = serial port banging, reset=rts sck=dtr mosi=txd miso=cts [/usr/local/etc/avrdude.conf:808]
  siprog   = Lancos SI-Prog <http://www.lancos.com/siprogsch.html> [/usr/local/etc/avrdude.conf:795]
  ponyser  = design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts [/usr/local/etc/avrdude.conf:782]
  89isp    = Atmel at89isp cable            [/usr/local/etc/avrdude.conf:749]
  frank-stk200 = Frank STK200                   [/usr/local/etc/avrdude.conf:735]
  blaster  = Altera ByteBlaster             [/usr/local/etc/avrdude.conf:722]
  ere-isp-avr = ERE ISP-AVR <http://www.ere.co.th/download/sch050713.pdf> [/usr/local/etc/avrdude.conf:712]
  atisp    = AT-ISP V1.1 programming cable for AVR-SDK1 from <http://micro-research.co.th/>  [/usr/local/etc/avrdude.conf:702]
  dapa     = Direct AVR Parallel Access cable [/usr/local/etc/avrdude.conf:691]
  xil      = Xilinx JTAG cable              [/usr/local/etc/avrdude.conf:678]
  futurlec = Futurlec.com programming cable. [/usr/local/etc/avrdude.conf:661]
  abcmini  = ABCmini Board, aka Dick Smith HOTCHIP [/usr/local/etc/avrdude.conf:651]
  picoweb  = Picoweb Programming Cable, http://www.picoweb.net/ [/usr/local/etc/avrdude.conf:641]
  sp12     = Steve Bolt's Programmer        [/usr/local/etc/avrdude.conf:630]
  alf      = Nightshade ALF-PgmAVR, http://nightshade.homeip.net/ [/usr/local/etc/avrdude.conf:614]
  bascom   = Bascom SAMPLE programming cable [/usr/local/etc/avrdude.conf:604]
  dt006    = Dontronics DT006               [/usr/local/etc/avrdude.conf:594]
  pony-stk200 = Pony Prog STK200               [/usr/local/etc/avrdude.conf:582]
  stk200   = STK200                         [/usr/local/etc/avrdude.conf:566]
  bsd      = Brian Dean's Programmer, http://www.bsdhome.com/avrdude/ [/usr/local/etc/avrdude.conf:555]
  pavr     = Jason Kyle's pAVR Serial Programmer [/usr/local/etc/avrdude.conf:547]
  dragon_dw = Atmel AVR Dragon in debugWire mode [/usr/local/etc/avrdude.conf:540]
  dragon_hvsp = Atmel AVR Dragon in HVSP mode  [/usr/local/etc/avrdude.conf:532]
  dragon_pp = Atmel AVR Dragon in PP mode    [/usr/local/etc/avrdude.conf:524]
  dragon_isp = Atmel AVR Dragon in ISP mode   [/usr/local/etc/avrdude.conf:516]
  dragon_jtag = Atmel AVR Dragon in JTAG mode  [/usr/local/etc/avrdude.conf:508]
  jtag2dw  = Atmel JTAG ICE mkII in debugWire mode [/usr/local/etc/avrdude.conf:500]
  jtag2isp = Atmel JTAG ICE mkII in ISP mode [/usr/local/etc/avrdude.conf:492]
  jtag2    = Atmel JTAG ICE mkII            [/usr/local/etc/avrdude.conf:484]
  jtag2fast = Atmel JTAG ICE mkII            [/usr/local/etc/avrdude.conf:476]
  jtag2slow = Atmel JTAG ICE mkII            [/usr/local/etc/avrdude.conf:468]
  jtagmkII = Atmel JTAG ICE mkII            [/usr/local/etc/avrdude.conf:460]
  jtag1slow = Atmel JTAG ICE (mkI)           [/usr/local/etc/avrdude.conf:453]
  jtag1    = Atmel JTAG ICE (mkI)           [/usr/local/etc/avrdude.conf:445]
  jtagmkI  = Atmel JTAG ICE (mkI)           [/usr/local/etc/avrdude.conf:437]
  avr911   = Atmel AppNote AVR911 AVROSP    [/usr/local/etc/avrdude.conf:431]
  avr109   = Atmel AppNote AVR109 Boot Loader [/usr/local/etc/avrdude.conf:425]
  butterfly = Atmel Butterfly Development Board [/usr/local/etc/avrdude.conf:419]
  usbtiny  = USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/ [/usr/local/etc/avrdude.conf:413]
  usbasp   = USBasp, http://www.fischl.de/usbasp/ [/usr/local/etc/avrdude.conf:407]
  avr910   = Atmel Low Cost Serial Programmer [/usr/local/etc/avrdude.conf:401]
  stk600hvsp = Atmel STK600 in high-voltage serial programming mode [/usr/local/etc/avrdude.conf:395]
  stk600pp = Atmel STK600 in parallel programming mode [/usr/local/etc/avrdude.conf:389]
  stk600   = Atmel STK600                   [/usr/local/etc/avrdude.conf:383]
  stk500hvsp = Atmel STK500 V2 in high-voltage serial programming mode [/usr/local/etc/avrdude.conf:377]
  stk500pp = Atmel STK500 V2 in parallel programming mode [/usr/local/etc/avrdude.conf:371]
  stk500v2 = Atmel STK500 Version 2.x firmware [/usr/local/etc/avrdude.conf:365]
  mib510   = Crossbow MIB510 programming board [/usr/local/etc/avrdude.conf:359]
  stk500v1 = Atmel STK500 Version 1.x firmware [/usr/local/etc/avrdude.conf:353]
  stk500   = Atmel STK500                   [/usr/local/etc/avrdude.conf:347]
  avrisp2  = Atmel AVR ISP mkII             [/usr/local/etc/avrdude.conf:337]
  avrispmkII = Atmel AVR ISP mkII             [/usr/local/etc/avrdude.conf:331]
  avrispv2 = Atmel AVR ISP V2               [/usr/local/etc/avrdude.conf:325]
  avrisp   = Atmel AVR ISP                  [/usr/local/etc/avrdude.conf:319]
  arduino  = Arduino                        [/usr/local/etc/avrdude.conf:313]



Posted by 구차니
ponyprog는 윈도우에서 사용하는 AVR ISP 용 프로그램이다.
물론 리눅스용도 있긴 하지만, 문제는 구버전용이라는 것.

PonyProg2000 v2.05a BETA English binary distribution (RedHat7.0 + Kernel 2.4.x)
PonyProg2000 v2.06c BETA English binary distribution (RedHat7.0 + Kernel 2.4.x)

라고 써있듯 Redhat 9도 아니고 무려 7용이다.. OTL
이것을 실행하려면 Fedora Core 9에서는 기본으로는 안되고 별도로
legacy library를 설치를 해야 할 듯하다.

일단 구동하면 발생하는 에러는
# ponyprog2000
ponyprog2000: error while loading shared libraries: libstdc++-libc6.2-2.so.3: cannot open shared object file: No such file or directory

libstdc++ 이 필요 하다라고 나오는 것 봐서는.. 꽤나 구형 라이브러리들을 많이 설치를 해야 할 듯 한데,
충돌없이 잘 작동이 되려나..

[ponyprog 공식 : http://www.lancos.com/ppwin95.html]



avrdude는 IO 포트를 사용해야 하므로, 반드시 root 권한으로 사용해야 한다.(역시 구형인가..)
그리고 AVRDUDE는.. STK-200 호환인지 먼지 알수가 없어서 하려고 하는데 이래저래 실패만 잔뜩..

$ avrdude -p m128 -c stk200 -P /dev/parport0
avrdude: can't open device "/dev/parport0": Permission denied
avrdude: failed to open parallel port "/dev/parport0"

# avrdude -p m128 -c stk200 -P /dev/parport0

avrdude: AVR device not responding
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.

2009/04/15 - [AVR / 8051] - gnome-avrdude : avrdude GUI frontend for gnome


스리슬적 성공기
# avrdude -p m128 -c stk200 -P /dev/parport0

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9702

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

Posted by 구차니

Requirements

For running KScope:
  1. The KDE runtime libraries, version 3.3 or above
  2. The Qt runtime libraries, as required by the installed KDE version
  3. Cscope
  4. Exuberant Ctags (KScope will not work with other variants of Ctags)
  5. Graphviz (required as of KScope version 1.3.0).

위에 보이듯이 version 3.3 이상의 QT가 필요 하다는데.. (KDE 3.3)
문제는 요즘꺼는 KDE 4 이다 보니, 제대로 호환이 되지 않아 컴파일시에
kateinterface 쪽에서 문제가 발생한다.

[링크 : http://sourceforge.net/forum/forum.php?thread_id=2574152&forum_id=338423]

아직까지 Kscope가 KDE4에 맞게 나오지 않았고, 나오기 까지는 상당시간이 걸릴것으로 예상이 된다.
그냥.. 다른걸 사용하도록 해야할듯 하다.
Posted by 구차니
다음 아고라 보다가 아주 dog 폭소를 하게 만들어 주는 글이 있었다.

연대 이종수 교수왈
"로스쿨에서 조낸 배웠는데 군대 갔다 와서 돌되면 로스쿨 가는 이유가 없다" 며
"로스쿨 졸업생은 공익법무관(그니까 병사로는 안보내시겠다?) 혹은 졸업후에 군입대 연기하도록 해야 해!" 라고 했단다

원래 법은 27살 넘으면 연기를 할 수 없다는데
대학원 갔다 졸업하면 그 나이를 넘기니, 변호사 시험을 못 붙으면 짤없이 군대를 가야 하는데 그게 아깝단다.

교수님~
공업수학이라던가 각종 프로그램 스킬 다 배운애들도 군대 갔다 와서 잘 하거덩요?
니네가 그거 해준다고 법질서 세우는것도 아니고, 법을 어기지 않을려고 법을 바꿔가면서 까지
그러고 싶수? 아주 드릴로 머리에 빵구 내야 합니까? ㄱ-

[아고라 글 : http://bbs1.agora.media.daum.net/gaia/do/debate/read?bbsId=D003&articleId=2471682]
[뉴스 기사 : http://www.lawtimes.co.kr/LawNews/News/NewsContents.aspx?kind=AF&serial=46356&page=1]
Posted by 구차니