1.ÏÂÔØlinux kernelÔ´´úÂë
µ½http://www.kernel.org/ÏÂÔØlinuxÄÚºËÔ´´úÂë,ÕâÀïÎÒÃÇʹÓÃ2.6.24.4µÄÄÚºË.
½âѹlinux-2.6.24.4.tar.bz2
[matt@localhost GEC2410]$ tar -xvjf linux-2.6.24.4.tar.bz2
[matt@localhost GEC2410]$ cd linux-2.6.24.4
2.ÐÞ¸ÄMakefile,ÉèÖý»²æ±àÒëÆ÷
ARCH ?= arm
CROSS_COMPILE ?= /home/GEC2410/toolchain/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-
3.ÉèÖÃNand·ÖÇø
ÐÞ¸Äarch/arm/plat-s3c24xx/common-smdk.cÖÐ108ÐеÄsmdk_default_nand_part[]ÈçÏÂ:
[matt@localhost linux-2.6.24.4]$ vim arch/arm/plat-s3c24xx/common-smdk.c
static struct mtd_partition smdk_default_nand_part[] = {
#if 0
[0] = {
.name = "Boot Agent",
.size = SZ_16K,
.offset = 0,
},
[1] = {
.name = "S3C2410 flash partition 1",
.offset = 0,
.size = SZ_2M,
},
[2] = {
.name = "S3C2410 flash partition 2",
.offset = SZ_4M,
.size = SZ_4M,
},
[3] = {
.name = "S3C2410 flash partition 3",
.offset = SZ_8M,
.size = SZ_2M,
},
[4] = {
.name = "S3C2410 ......
1.ÏÂÔØlinux kernelÔ´´úÂë
µ½http://www.kernel.org/ÏÂÔØlinuxÄÚºËÔ´´úÂë,ÕâÀïÎÒÃÇʹÓÃ2.6.24.4µÄÄÚºË.
½âѹlinux-2.6.24.4.tar.bz2
[matt@localhost GEC2410]$ tar -xvjf linux-2.6.24.4.tar.bz2
[matt@localhost GEC2410]$ cd linux-2.6.24.4
2.ÐÞ¸ÄMakefile,ÉèÖý»²æ±àÒëÆ÷
ARCH ?= arm
CROSS_COMPILE ?= /home/GEC2410/toolchain/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-
3.ÉèÖÃNand·ÖÇø
ÐÞ¸Äarch/arm/plat-s3c24xx/common-smdk.cÖÐ108ÐеÄsmdk_default_nand_part[]ÈçÏÂ:
[matt@localhost linux-2.6.24.4]$ vim arch/arm/plat-s3c24xx/common-smdk.c
static struct mtd_partition smdk_default_nand_part[] = {
#if 0
[0] = {
.name = "Boot Agent",
.size = SZ_16K,
.offset = 0,
},
[1] = {
.name = "S3C2410 flash partition 1",
.offset = 0,
.size = SZ_2M,
},
[2] = {
.name = "S3C2410 flash partition 2",
.offset = SZ_4M,
.size = SZ_4M,
},
[3] = {
.name = "S3C2410 flash partition 3",
.offset = SZ_8M,
.size = SZ_2M,
},
[4] = {
.name = "S3C2410 ......
¿ª·¢»·¾³£ºUbuntu9.10,python2.6,gcc4.4.11,ubuntuϵÄpythonÔËÐаüºÍ¿ª·¢°üÊÇ·Ö¿ªµÄ£¬Òò´ËÐèÒªÔÚÐÂÀûµÃÀïÃæ°²×°python-all-dev,´Ó¶ø¿ÉÒÔÔÚ´úÂëÖÐÒýÓÃpythonµÄÍ·ÎļþºÍ¿â¡£2.ÏÂÃæÊÇÒ»¸ö×î¼òµ¥µÄ¿ÉÒÔ¹©pythonµ÷ÓõÄcÀ©Õ¹Ä£¿é£¬¼ÙÉèc³ÌÐòÎļþÃûΪfoo.c:´úÂë#include <Python.h>
static PyObject* foo_bar(PyObject* self, PyObject* args) {
Py_RETURN_NONE;
}
static PyMethodDef foo_methods[] = {
{"bar",(PyCFunction)foo_bar,METH_NOARGS,NULL},
{NULL,NULL,0,NULL}
};
PyMODINIT_FUNC initfoo() {
Py_InitModule3("foo", foo_methods, "My first extension module.");
} ÎÒÃÇ¿ÉÒÔ½«ÉÏÊöÄ£¿é·Ö³É3¸ö²¿·Ö£º1£©cÄ£¿éÏë¶ÔÍⱩ¶µÄ½Ó¿Úº¯Êý¡£2£©Ìṩ¸øÍⲿµÄpython³ÌÐòʹÓõÄÒ»¸öcÄ£¿éº¯ÊýÃû³ÆÓ³Éä±í¡£3£©cÄ£¿éµÄ³õʼ»¯º¯Êý¡£Ä£¿éµÄµÚÒ»Ðн«Python.hÒýÈ뵽ģ¿éÖУ¬Õâ¸öÎļþ½«Ê¹µÃÄãµÄÄ£¿é¿ÉÒÔhook½øpythonµÄ½âÊÍÆ÷£¬´Ó¶ø¿ÉÒÔΪÍⲿµÄ ......
¿ª·¢»·¾³£ºUbuntu9.10,python2.6,gcc4.4.11,ubuntuϵÄpythonÔËÐаüºÍ¿ª·¢°üÊÇ·Ö¿ªµÄ£¬Òò´ËÐèÒªÔÚÐÂÀûµÃÀïÃæ°²×°python-all-dev,´Ó¶ø¿ÉÒÔÔÚ´úÂëÖÐÒýÓÃpythonµÄÍ·ÎļþºÍ¿â¡£2.ÏÂÃæÊÇÒ»¸ö×î¼òµ¥µÄ¿ÉÒÔ¹©pythonµ÷ÓõÄcÀ©Õ¹Ä£¿é£¬¼ÙÉèc³ÌÐòÎļþÃûΪfoo.c:´úÂë#include <Python.h>
static PyObject* foo_bar(PyObject* self, PyObject* args) {
Py_RETURN_NONE;
}
static PyMethodDef foo_methods[] = {
{"bar",(PyCFunction)foo_bar,METH_NOARGS,NULL},
{NULL,NULL,0,NULL}
};
PyMODINIT_FUNC initfoo() {
Py_InitModule3("foo", foo_methods, "My first extension module.");
} ÎÒÃÇ¿ÉÒÔ½«ÉÏÊöÄ£¿é·Ö³É3¸ö²¿·Ö£º1£©cÄ£¿éÏë¶ÔÍⱩ¶µÄ½Ó¿Úº¯Êý¡£2£©Ìṩ¸øÍⲿµÄpython³ÌÐòʹÓõÄÒ»¸öcÄ£¿éº¯ÊýÃû³ÆÓ³Éä±í¡£3£©cÄ£¿éµÄ³õʼ»¯º¯Êý¡£Ä£¿éµÄµÚÒ»Ðн«Python.hÒýÈ뵽ģ¿éÖУ¬Õâ¸öÎļþ½«Ê¹µÃÄãµÄÄ£¿é¿ÉÒÔhook½øpythonµÄ½âÊÍÆ÷£¬´Ó¶ø¿ÉÒÔΪÍⲿµÄ ......
º¯ÊýÃû: abs ¹¦ ÄÜ: ÇóÕûÊýµÄ¾ø¶ÔÖµ
ÓÃ ·¨: int abs(int i);
³ÌÐòÀý:
#include <stdio.h>
#include <math.h>
int main(void)
{
int number = -1234;
printf("number: %d absolute value: %d\n", number, abs(number));
return 0;
}
º¯ÊýÃû: atof
¹¦ ÄÜ: °Ñ×Ö·û´®×ª»»³É¸¡µãÊý
ÓÃ ·¨: double atof(const char *nptr);
³ÌÐòÀý:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
float f;
char *str = "12345.67";
f = atof(str);
printf("string = %s float = %f\n", str, f);
return 0;
}
º¯ÊýÃû: atoi
¹¦ ÄÜ: °Ñ×Ö·û´®×ª»»³É³¤ÕûÐÍÊý
ÓÃ ·¨: int atoi(const char *nptr);
³ÌÐòÀý:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int n;
char *str = "12345.67";
n = atoi(str);
printf("string = %s integer = %d\n", str, n);
return 0;
}
º¯ÊýÃû: atol
¹¦ Ä ......
ÉÏÖÜÀÏ°å·ÖÏÂÀ´6¸öְλÈí¼þ¿ª·¢·½ÃæµÄְλ¸øÎÒ£¬ÒªÎÒ°´Ö°Î»ÒªÇóÑ°ÕÒºÏÊʵÄÈ˲š£¾ÓÈ»ÊÇC/C++!¾ÝÎÒËùÖª£¬ÔÚÈ˲ſâÖУ¬JAVA È˲ŵ¹ÊÇÓ¦Óо¡ÓУ¬Ñ§CµÄ£¬»¹ÊÇǶÈëʽ¿ª·¢µÄ¿ÉÕæµÄºÃÉÙ°¡¡£ÎÒÓÖ²»ÊÇŮ洣¬ÄѵÀÎÒ»áÔìÈ˲Åô£¿ÒªÇóÌõ¼þ»¹Õâô¸ß£¡
ÒÔÏÂÊÇ´óÁ¬Èí¼þÔ°¼¸¼ÒÖªÃûÍâÆóίÍÐÎÒÃÇÕÐƸµÄְλÐÅÏ¢¡£
Position 1 Èí¼þ¿ª·¢¹¤³Ìʦ
ְλÄÚÈÝ£º ÐèÇó·ÖÎö£¬Éè¼Æ£¬±àÂë²âÊÔµÈ
ְλҪÇó£º Õý¹æ´óѧ±¾¿ÆÒÔÉÏ¡£
¾«Í¨CÓïÑÔ£¬ÈçÓÐC++£¬JAVAµÈ¾Ñé¸ü¼Ñ¡£
ÓÅÏÈÌõ¼þ£º Çý¶¯¿ª·¢¾ÑéÕß¡£
µç×ӻط£¬Î¢»úµÈHW֪ʶ¡£
ÓÐÀûÓÃOS(Linux/QNX/iTron)½øÐпª·¢µÄ¾ÑéÕß¡£
ÈÕÓï3¼¶ÒÔÉÏÕß¡£
Position 2 Èí¼þ¿ª·¢team leader
ְλÄÚÈÝ£º ÒÔÉÏְλÍŶӵĹÜÀí¡£
ְλҪÇó£º Õý¹æ´óѧ±¾¿ÆÒÔÉÏ¡£
& ......
ÉÏÖÜÀÏ°å·ÖÏÂÀ´6¸öְλÈí¼þ¿ª·¢·½ÃæµÄְλ¸øÎÒ£¬ÒªÎÒ°´Ö°Î»ÒªÇóÑ°ÕÒºÏÊʵÄÈ˲š£¾ÓÈ»ÊÇC/C++!¾ÝÎÒËùÖª£¬ÔÚÈ˲ſâÖУ¬JAVA È˲ŵ¹ÊÇÓ¦Óо¡ÓУ¬Ñ§CµÄ£¬»¹ÊÇǶÈëʽ¿ª·¢µÄ¿ÉÕæµÄºÃÉÙ°¡¡£ÎÒÓÖ²»ÊÇŮ洣¬ÄѵÀÎÒ»áÔìÈ˲Åô£¿ÒªÇóÌõ¼þ»¹Õâô¸ß£¡
ÒÔÏÂÊÇ´óÁ¬Èí¼þÔ°¼¸¼ÒÖªÃûÍâÆóίÍÐÎÒÃÇÕÐƸµÄְλÐÅÏ¢¡£
Position 1 Èí¼þ¿ª·¢¹¤³Ìʦ
ְλÄÚÈÝ£º ÐèÇó·ÖÎö£¬Éè¼Æ£¬±àÂë²âÊÔµÈ
ְλҪÇó£º Õý¹æ´óѧ±¾¿ÆÒÔÉÏ¡£
¾«Í¨CÓïÑÔ£¬ÈçÓÐC++£¬JAVAµÈ¾Ñé¸ü¼Ñ¡£
ÓÅÏÈÌõ¼þ£º Çý¶¯¿ª·¢¾ÑéÕß¡£
µç×ӻط£¬Î¢»úµÈHW֪ʶ¡£
ÓÐÀûÓÃOS(Linux/QNX/iTron)½øÐпª·¢µÄ¾ÑéÕß¡£
ÈÕÓï3¼¶ÒÔÉÏÕß¡£
Position 2 Èí¼þ¿ª·¢team leader
ְλÄÚÈÝ£º ÒÔÉÏְλÍŶӵĹÜÀí¡£
ְλҪÇó£º Õý¹æ´óѧ±¾¿ÆÒÔÉÏ¡£
& ......
ͨÐÅ
Server£º
#pragma comment(lib, "ws2_32.lib")
#include <Winsock2.h>
#include <stdio.h>
void main()
{
//°æ±¾ÐÉÌ
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(1,1); //0x0101
err = WSAStartup(wVersionRequested,&wsaData);
if(err!=0)
{
return 0;
}
if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1) //wsaData.wVersion!=0x0101
{
WSACleanup();
return 0;
}
//´´½¨Socket
SOCKET sockSvr = socket(AF_INET,SOCK_STREAM,0);
//´´½¨IPµØÖ·ºÍ¶Ë¿Ú
SOCKADDR_IN addrSvr;
addrSvr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrSvr.sin_family = AF_INET;
addrSvr.sin_port = htons(6000);
//°ó¶¨¶Ë¿Ú¼àÌý
bind(sockSvr,(SOCKADDR*)&addrSvr,sizeof(SOCKADDR));
listen(sockSvr,5);
sockaddr_in addrClient;
int len ......
ͨÐÅ
Server£º
#pragma comment(lib, "ws2_32.lib")
#include <Winsock2.h>
#include <stdio.h>
void main()
{
//°æ±¾ÐÉÌ
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(1,1); //0x0101
err = WSAStartup(wVersionRequested,&wsaData);
if(err!=0)
{
return 0;
}
if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1) //wsaData.wVersion!=0x0101
{
WSACleanup();
return 0;
}
//´´½¨Socket
SOCKET sockSvr = socket(AF_INET,SOCK_STREAM,0);
//´´½¨IPµØÖ·ºÍ¶Ë¿Ú
SOCKADDR_IN addrSvr;
addrSvr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrSvr.sin_family = AF_INET;
addrSvr.sin_port = htons(6000);
//°ó¶¨¶Ë¿Ú¼àÌý
bind(sockSvr,(SOCKADDR*)&addrSvr,sizeof(SOCKADDR));
listen(sockSvr,5);
sockaddr_in addrClient;
int len ......
C/C++λ²Ù×÷
Ò»¡¢´«Í³µÄC·½Ê½Î»²Ù×÷£º
1.»ù±¾²Ù×÷£º
ʹÓÃÒ»¸öunsigned int±äÁ¿À´×÷ΪλÈÝÆ÷¡£
2.²Ù×÷·û£º
| °´Î»»ò²Ù×÷·û£ºresult=exp1|exp2;µ±exp1ºÍexp2ÖжÔӦλÖÐÖÁÉÙÓÐÒ»¸öΪ1ʱ£¬resultÖжÔӦλΪ1£¬·ñÔòΪ0¡£
& °´Î»Óë²Ù×÷·û£º£ºresult=exp1&exp2;µ±exp1ºÍexp2ÖжÔӦλȫΪ1ʱ£¬resultÖжÔӦλΪ1£¬·ñÔòΪ0¡£
^ °´Î»Òì»ò»ò²Ù×÷·û£ºresult=exp1^exp2;µ±exp1ºÍexp2ÖжÔӦλ²»Ïàͬʱ£¬resultÖжÔӦλΪ1£¬·ñÔòΪ0¡£
~ ·´×ª²Ù×÷·û£º½«Î»ÈÝÆ÷ÖеÄËùÓÐλ¶¼·´×ª£¬1±äΪ0£¬0±äΪ1¡£
< < °´Î»×óÒƲÙ×÷·û£ºexp < <n£¬½«ÈÝÆ÷ÖÐËùÓеÄλÏò×óÒÆn룬¿Õ³öµÄλÓÃ0Ìî³ä¡£
>> °´Î»ÓÒÒƲÙ×÷·û£ºexp>>n£¬½«ÈÝÆ÷ÖÐËùÓеÄλÏòÓÒÒÆn룬¿Õ³öµÄλÓÃ0Ìî³ä¡£
|=,&=,^= ·Ö±ð¶ÔÓ¦|&^ÈýÖÖ²Ù×÷·ûµÄ¸´ºÏ²Ù×÷·û¡£
3.³£ÓòÙ×÷
ÕâÀïÎÒÃǼÙÉèÓÐÒ»¸öresultµÄunsigned int±äÁ¿ÓÃÀ´´¢´æ32¸öѧÉúµÄ³É¼¨£¨Í¨¹ýºÍ²»Í¨¹ý·Ö±ðÓÃ0ºÍ1£©£¬ÕâÑùresult¾ÍÓÐ33루result´ÓÓÒÖÁ×󣬴Ó0¿ªÊ¼¼ÆËãλÊý£¬ÔÚÕâ¸öÀý×ÓÖÐ0λ±»ÀË·Ñ£©¡£
(a) ½«µÚ27λÉèÖÃΪ¼°¸ñ£¨Éè×÷1£©ÆäËûλ²»±ä£º
result|£½(1 < <2 ......
C/C++λ²Ù×÷
Ò»¡¢´«Í³µÄC·½Ê½Î»²Ù×÷£º
1.»ù±¾²Ù×÷£º
ʹÓÃÒ»¸öunsigned int±äÁ¿À´×÷ΪλÈÝÆ÷¡£
2.²Ù×÷·û£º
| °´Î»»ò²Ù×÷·û£ºresult=exp1|exp2;µ±exp1ºÍexp2ÖжÔӦλÖÐÖÁÉÙÓÐÒ»¸öΪ1ʱ£¬resultÖжÔӦλΪ1£¬·ñÔòΪ0¡£
& °´Î»Óë²Ù×÷·û£º£ºresult=exp1&exp2;µ±exp1ºÍexp2ÖжÔӦλȫΪ1ʱ£¬resultÖжÔӦλΪ1£¬·ñÔòΪ0¡£
^ °´Î»Òì»ò»ò²Ù×÷·û£ºresult=exp1^exp2;µ±exp1ºÍexp2ÖжÔӦλ²»Ïàͬʱ£¬resultÖжÔӦλΪ1£¬·ñÔòΪ0¡£
~ ·´×ª²Ù×÷·û£º½«Î»ÈÝÆ÷ÖеÄËùÓÐλ¶¼·´×ª£¬1±äΪ0£¬0±äΪ1¡£
< < °´Î»×óÒƲÙ×÷·û£ºexp < <n£¬½«ÈÝÆ÷ÖÐËùÓеÄλÏò×óÒÆn룬¿Õ³öµÄλÓÃ0Ìî³ä¡£
>> °´Î»ÓÒÒƲÙ×÷·û£ºexp>>n£¬½«ÈÝÆ÷ÖÐËùÓеÄλÏòÓÒÒÆn룬¿Õ³öµÄλÓÃ0Ìî³ä¡£
|=,&=,^= ·Ö±ð¶ÔÓ¦|&^ÈýÖÖ²Ù×÷·ûµÄ¸´ºÏ²Ù×÷·û¡£
3.³£ÓòÙ×÷
ÕâÀïÎÒÃǼÙÉèÓÐÒ»¸öresultµÄunsigned int±äÁ¿ÓÃÀ´´¢´æ32¸öѧÉúµÄ³É¼¨£¨Í¨¹ýºÍ²»Í¨¹ý·Ö±ðÓÃ0ºÍ1£©£¬ÕâÑùresult¾ÍÓÐ33루result´ÓÓÒÖÁ×󣬴Ó0¿ªÊ¼¼ÆËãλÊý£¬ÔÚÕâ¸öÀý×ÓÖÐ0λ±»ÀË·Ñ£©¡£
(a) ½«µÚ27λÉèÖÃΪ¼°¸ñ£¨Éè×÷1£©ÆäËûλ²»±ä£º
result|£½(1 < <2 ......