Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1573992
  • 博文数量: 204
  • 博客积分: 2215
  • 博客等级: 大尉
  • 技术积分: 4426
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-06 08:03
个人简介

气质,源于心灵的自信!

文章存档

2018年(1)

2017年(1)

2016年(1)

2015年(18)

2014年(20)

2013年(30)

2012年(119)

2011年(14)

分类: LINUX

2012-07-06 11:38:06

-> 源码所在的位置路径
kernel/arch/arm/tools/mach-types  板子的机器码
include/generated/mach-types.h   里面制动生成的machine_is_xxx
kernel/arch/arm/configs/xxx_defconfig 编译内核时的默认配
kernel/arch/arm/boot/zImage   生成的内核压缩镜像
kernel/include/generated/Mach-types.h  mach-types生成的机器码

-> 用lsusb可以查vid和pid
插入usb鼠标后执行lsusb的输出内容如下:
-----------------------------------------
Bus 005 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 006: ID 15d9:0a37
Bus 002 Device 001: ID 0000:0000

内容解读:
-----------------------------------------
Bus 005
    表示第五个usb主控制器(机器上总共有5个usb主控制器 -- 可以通过命令lspci | grep USB查看)

Device 006
    表示系统给usb鼠标分配的设备号(devnum),同时也可以看到该鼠标是插入到了第二个usb主控制器
    006        usb_device.devnum
    /sys/devices/pci0000:00/0000:00:1d.1/usb2/2-2/devnum

ID 15d9:0a37
    表示usb设备的ID(这个ID由芯片制造商设置,可以唯一表示该设备)
    15d9    usb_device_descriptor.idVendor
    0a37    usb_device_descriptor.idProduct
    /sys/devices/pci0000:00/0000:00:1d.1/usb2/2-2/idVendor

Bus 002 Device 006: ID 15d9:0a37
Bus 002 Device 001: ID 0000:0000
    表示002号usb主控制器上接入了两个设备:
    一个是usb根Hub -- 001
    一个是usb鼠标   -- 006

说明:
lsusb命令是一个学习USB驱动开发,认识USB设备的助手,推荐大家使用,如果您的开发板中或者产品中没有lsusb命令可以自己移植一个,放到文件系统里面

printk("%s: ------>\n", __FUNCTION__);
 # getevent获得event事件代码。
#sudo fdisk -l 列出当前机器的所有磁盘。
#mount 列出所有已经mount的设备。
#../xbootimg --bootimg boot.img

-> 命令行下进入fastboot
adb reboot bootloader

->  adb中增加busybox
255|root@android:/ # mount -o remount rw /                                     
shangbaogen@shangbaogen-OptiPlex-330:~$ adb remount
remount succeeded
shangbaogen@shangbaogen-OptiPlex-330:~$ adb push  busybox /system/bin
2912 KB/s (1999588 bytes in 0.670s)
shangbaogen@shangbaogen-OptiPlex-330:~$ adb shell
127|root@android:/ # cd system/bin/                                            
root@android:/system/bin # chmod 777 busybox                                   
root@android:/system/bin # cd /
root@android:/ # busybox
 
注册的lun设备
root@android:/sys/devices/platform/msm_hsusb/gadget/lun0 # ls
lun是什么?
有人问了,啥是 LUN 啊?logical unit number.通常在谈到 scsi 设备的时候不可避免的要说起 LUN.关于
LUN,曾几何时,一位来自 Novell(SUSE)的参与开发 Linux 内核中 usb 子系统的工程师这样对我说,一个
lun 就是一个 device 中的一个 drive.换言之,usb 中引入 lun 的目的在于,举例来说,有些读卡器可以有多
个插槽,比如就是两个,其中一个支持 CF 卡,另一个支持 SD 卡,那么这种情况要区分这两个插槽里的冬冬,
就得引入 lun 这么一个词.这叫逻辑单元.很显然,像 U 盘这样简单的设备其 LUN 必然是一个.有时候,人们常
把 U 盘中一个分区当作一个 LUN,这样说可能对小学三年级以下的朋友是可以接受的,但是作为一个成年人,
不应该这么理解.知道了 LUN 以后,自然就可以知道 US_FL_SINGLE_LUN 是干嘛了,这个 flag 的意义很明显,直截了当的
告诉你,我这个设备只有一个 LUN,它不支持多个 LUN.而 max_lun 又是什么意思?us 中的成员 max_lun
等于一个设备所支持的最大的 lun 号.即如果一个设备支持四个 LUNs,那么这四个 LUN 的编号就是
0,1,2,3,而 max_lun 就是 3.如果一个设备不用支持多个 LUN,那么它的 max_lun 就是 0.所以这里
max_lun 就是设为了 0.

-> 当文件系统为只读的时候,从新挂载。
adb remount
root@android:/ # mount -t /dev/block/mmcblk0p21 /sdcard/

-> 修改usb驱动的注册表
regedit
HKEY_LOCAL_MACHINE
         SYSTEM
           currentcontrolset
                     Enum
                     usb


-> mmcblock0p21为挂载分区。
格式化该分区为fat32
mkfs.vfat -v /dev/block/mmcblock0p21
挂载该分区。
mount /dev/block/mmcblock0p21 /mnt/sdcard/
挂载到pc端
echo "/dev/block/vold/179:21">/sys/class/android_usb/f_mass_storage/lun/file

-> android中打开debug的方法
(1)每个makefile中都对应的有debug开关,在xxx_defconfig中加入对应开关的宏为y
(2)系统起来后在命令行下输入echo 8 > /proc/sys/kernel/printk使打印的级别为8,打印所有的log

-> adb控制多个设备
$ adb devices
$ adb -s 33304728528D00EC shell

-> 安装Busybox
下载
# adb push busybox /system/xbin
# cd /system/xbin
# chmod 755 busybox
# busybox --install
# mount -o remount,rw system system

-> 安装Samba
$ sudo apt-get install samba
$ sudo vim /etc/samba/smb.conf
[Work]
path=/home/...
guest_ok=yes
create_mask=0777
writeable=yes
$ /etc/init.d/samba restart
$ ifconfig 192,168.233.136
Windows映射磁盘驱动 z: \\192.168.233.136\Work

-> const修饰指针的情况

int b = 500;
const int* a = &[1]
int const *a = &[2]
int* const a = & [3]
const int* const a = &[4]

如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。因此,[1]和[2]的情况相同,都是指针所指向的内容为常量(const放在变量声明符的位置无关),这种情况下不允许对内容进行更改操作,如不能*a = 3 ;[3]为指针本身是常量,而指针所指向的内容不是常量,这种情况下不能对指针本身进行更改操作,如a++是错误的;[4]为指针本身和指向的内容均为常量。

换行符‘\n’和回车符‘\r’

顾名思义,换行符就是另起一行,回车符就是回到一行的开头,所以我们平时编写文件的回车符应该确切来说叫做回车换行符 

'\n' 10 换行(newline)
'\r' 13 回车(return)


也可以表示为'\x0a'和'\x0d'.(16进制)

在windows系统下,回车换行符号是"\r\n".但是在Linux等系统下是没有"\r"符号的。

在解析文本或其他格式的文件内容时,常常要碰到判定回车换行的地方,这个时候就要注意既要判定"\r\n"又要判定"\n"。

写程序时可能得到一行,将其进行trim掉'\r',这样能得到你所需要的string了。


阅读(2486) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~