<<Essential Linux Device Drivers>>

1. Stb225 linux 启动信息 => "Determined physical RAM map:
                             memory: 03972000 @ 00000000 (usable)"

   该打印在内存管理子系统初始化时发生,前面03972000表示内存大小,00000000表示起始地址, usable表示内存类型是BOOT_MEM_RAM。
   调用函数关系如下:
   linux/init/main.c:               start_kernel() =>
   linux/arch/mips/kernel/setup.c:  setup_arch() => {
        prom_init();
        ... ...
        arch_mem_init();
    }
    其中,prom_init()读取uboot设置的启动linux时的环境变量 - memsize,即物理内存的大小。
    该内存大小减去DSP MIPS系统需要的内存以及保留的高端内存(用于视频解码等)所得为linux实际可用的内存大小。
    即(可见/linux/arch/mips/nxp/pnx833x/stb22x/board.c prom_init()):
    memsize(from uboot) = memsize(for linux) + (CONFIG_DSP_MIPS_MEM_SIZE + CONFIG_RESERVED_HIGH_MEM_SIZE);
    即 80000000(get from uboot) = 03972000(for control linux) + d00000(for dsp linux) + 398e000(for high memory)

    而uboot中memsize的获得过程如下:
    u-boot/board/stb22x/stb22x.c, initdram()通过读写检测到ram的size
    u-boot在启动linux前,调用linux_set_env("memsize", "80000000") - 见u-boot/lib_mips/mips_linux.c

2. 内核命令行
   Stb225环境下命令行参数通过u-boot设置,也可以通过CONFIG_CMDLINE追加配置。
   而命令行的使用可以参考init/main.c,增加新的参数设置,书本P22也有典型例子。


3. BogoMIPS计算
   BogoMIPS(Bogus MIPS) = loops_per_jiffy * Number of jiffies in 1 second (HZ) * Number of instructions consumed by the internal delay loop

   由于loops_per_jiffy是源自于近似计算,所以该方法估算的计算机速度称为BogoMIPS.


4. socket(like a two-way communication pipe)
  比如stb225注册了以下几类socket。
  AF_UNIX --- Unix Domain Sockets, can be used between interprocesses
  AF_INET --- Internet IP Protocol,
  AF_NETLINK --- Between User processes and the kernel
  AF_PACKET --- Packet family

  关于unix socket,建议参考以下页面:
  http://beej.us/guide/bgipc/output/html/multipage/unixsock.html (其中的例子非常好,尤其是关于socketpair()的例子,非常cool)
  unix socket也是文件系统中的一个特殊文件,但是不用open和read等,而是用socket(),bind(),recv()等。

  unix socket的概念源自于Internet socket,好的参考见:
  http://beej.us/guide/bgnet/output/html/multipage/index.html
  书名<<Beej's Guide to Network Programming>>

5.   ARP: Address Resolution Protocol
   地址解析协议,实现通过IP地址得知其物理地址。原理大致如下:以主机A向主机B发送数据为例,当发送数据时,主机A查找自己的ARP缓存表中查找目标 IP地址,如果找到,也就得到目标MAC地址。否则,在网络上广播询问主机B的MAC地址,得到后同时更新ARP缓存表。百度词条有生动阐述。
   RARP: Reverse Address Resolution Protocol
   方向地址转换协议,允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。网络管理员在局域网网关路由器里创建一个表以映射物理地址(MAC)和与其对应的 IP 地址。当设置一台新的机器时,其 RARP 客户机程序需要向路由器上的 RARP 服务器请求相应的 IP 地址。百度词条有生动阐述。

 

6. ldd [OPTION]...  FILE ...

显示文件依赖的共享库