首页 > 学院 > 开发设计 > 正文

早期Linux和c语言开发时的一些问题

2019-11-06 06:10:38
字体:
来源:转载
供稿:网友
     关于早期底层开发的一些问题,主要是一些c语言程序开发的问题,和linux的一些问题,有的已经明白,有的需要继续搞懂,都是一些基本问题:1,buff+28和buff[28]不一样。2,16进制转ASCII。3,在网络上传输 , 数字,字符,ASCII,char类型的数据,int类型的数据。4,就是说,我在这里接收到的可以是任意类型的指针,假如对方传给我的是16进制的数据呢?还有网络字节与主机字节的问题。   len = recvfrom(m_DataSocket, buff, sizeof(buff) - 1, 0,   (struct sockaddr *) &c_addr, &addr_len);5,从网络接收到的数据应该有数字,但应该怎么样区分呢?6,unsigned char sn[IDCARDMAXNUM][5]和unsigned char sn[IDCARDMAXNUM*5]两种写法又何不同。7,数字与字符转换用到的一个很HAN的函数:sPRintf函数。8,在linxu文件系统里面,用过一个命令mkdosfs /dev/cpesd这个应该是把对应的文件系统格式化为DOS下文件。    ext系列,这些好像和那些ubi,yaffs,jffs不一样,不在同一类别里面,怎么回事呢?比如ext2可以制作成ramdisk,有点 迷茫。9,Qt creator中,那些东西需要动作编辑器功能。10,在我们这个系统里,为什么GPIO线程跑的很快,其他线程跑的比较慢。11,Qt编程里面,窗体里面,有个工具条,和状态条。工具条,里面有几个东西,需要学习下:QMenuBar,QMenu,QAction,QActions。12,Linux启动流程,为什么是4KB?13,嵌入式linux段错误调试方法总结。14,boot环境变量总结原理15,Qt索引模型中,index(row,col,P)的用法举例。16,模拟摄像头驱动问题,既ASS那个转换芯片17,录音快的问题没解决,为什么18,这几天必须把模拟摄像头视频采集搞懂,先步骤如下:  1)SAA7114  2)I2C如何控制它  3)结合8120研究,YUV存储,驱动等等。这些搞完了就解决音频采集的问题。19,一个驱动程序,有硬件设备采集数据后,会把数据放到一个FIFO里面,然后应该再从FIFO里面把数据移动到系统存储器里面,这个过程好像是硬件自动完成的。那么,我们写LINUX设备驱动的时候,出了配备一些寄存器外,对这些由硬件获取的数据,该作何处理呢?而且为什么,我打开对应的设备,就可以找到相应的数据区呢?open函数里面有两个参数,一个是设备名称,一个是模式,设备名称对应inode结构体,会根据这个设备名称,找到注册的结构体,结构体里面有读写映射等等操作。应该说,打开一个设备的过程,就是做了一个映射,返回了一个整数标示。然后,根据这个标示,调用读写等等函数,实际操作硬件数据的是这些操作函数。那么,我所应该关注(或者研究是读写等等操作的时候,具体怎么处理那些硬件数据的)。OK,这里先提出问题,暂不细究,待续究?20,ac97是一个构架,除了传输还有控制功能,,IIS只是总线,通道而已。待续究,IIS既然有控制器,那就不是主从模式吧???21,所有像I2C这样的总线,应该都有一个master和slaver吧22, 有对USB热插拔U盘的过程比较熟悉的吗,请给我指点下~~    这个流程跑完,也不过是在/sys/bus/usb下创建了一些目录,设置环境变量,调用mdev。    但是,U盘插上,自动创建/dev/sda1这样的节点,这一步...       应该需要调用device_create这个函数,去促发mdev来自动创建.   可是我找不到~~    换句话说,图上的内容跑完,还没看到创建/dev/sda1的代码,请教这部分在哪?23,内核里面,开启MMU之后,物理地址要转换为虚拟地址,所以一般要加一个数字,那个数字是怎么算出来的?比如0xf0000000?    关注物理地址转虚拟地址时的那个整数怎么算出来的?24,pic特别是pic在bootloader中的运用25,ld命令     另外还有qt项目中学到的东西:1,最重要的一点是自信:我之前大大小小的Qt项目做过很多,但没有真正参与到公司开发中去,这次是实践了。2,Qt之数据库的运用3,qeditline之的几个信号,特别是当按钮的那种功能、4,比如一个键盘,一个按键对应一个槽。5,内存泄漏,以及对其的观察检测。6,close默认并不释放内存。7,一些配置,如网络配置等等,设置的一些参数是保存到系统配置文件里。8, 如果NAND里面已经有内核,可以直接启动加载内核;也可以通过设置命令,让其从TFTP下载内核;然后可以通过下面命令改回来。      setenv bootcmd "nand read 0xC0008000 0x100000  0x500000;bootm 0xC0008000"9,低端内存代表存在于内核空间的逻辑地址的内存。几乎在每种系统上读者都可能遇到,所有的内存都是低端内存。10,高端内存 那些不存在逻辑地址的内存,因为相对于能够用 32 位来寻址的内存,系统通常有更多的物理内存。       %d这些都有一定范围的,超过一定的数据,就打印出来错误的东西了。比如0xc0a80115。有一个常识性的东西,字符是ASCII,字符转数字-'0'.数字转字符+‘0’。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表