Friday, January 29, 2010

Steps to Init Block Device Driver on Linux

from Essential Linux Device Driver
1.
Registers the block device using register_blkdev(). This block library
routine assigns an unused major number to myblkdev and adds an entry for
the device in /proc/devices.
2.
Associates a request method with the block device. It does this by
supplying the address of myblkdev_request() to blk_init_queue(). The
call to blk_init_queue() returns the request_queue for myblkdev. Refer
back to Figure 14.2 to see how the request_queue sits relative to the
driver. The second argument to blk_init_queue(), myblkdev_lock, is a
spinlock to protect the request_queue from concurrent access.
3.
Hardware performs disk transactions in units of sectors, whereas
software subsystems, such as filesystems, deal with data in terms of
blocks. The common sector size is 512 bytes; the usual block size is
4096 bytes. You need to inform the block layer about the sector size
supported by your storage hardware and the maximum number of sectors
that your driver can receive per request. myblkdev_init() accomplishes
these by invoking blk_queue_hardsect_size() and blk_queue_max_sectors(),
respectively.
4.
Allocates a gendisk corresponding to myblkdev using alloc_disk() and
populates it. One important gendisk field that myblkdev_init() supplies
is the address of the driver's block_device_operations. Another
parameter that myblkdev_init() fills in is the storage capacity of
myblkdev in units of sectors. This is accomplished by calling
set_capacity(). Each gendisk also contains a flag that signals the
properties of the underlying storage hardware. If the drive is
removable, for example, the gendisk's flag field should be marked
GENHD_FL_REMOVABLE.
5.
Associates the gendisk prepared in Step 4 with the request_queue
obtained in Step 2. Also, connects the gendisk with the device's
major/minor numbers and a name.
6.
Adds the disk to the block I/O layer by invoking add_disk(). When this
is done, the driver has to be ready to receive requests. So, this is
usually the last step of the initialization sequence.

Wednesday, January 27, 2010

What users comment on this bonding technic

Ya, I this product is definitely using bonding technique. For the uploading problem, it's quite reasonable. Because packages from the same TCP connection go to different path to reach the destination with different delay. So in the destination side, the package may fell out of TCP window and cause the retransmit of the same TCP package. It's not easy to solve the problem I think. One way is to bind the TCP connection to a specified interface so that the packages cease to reach in order. But user can not benefit from this design if there is only one connection.

in reference to:

"We have a portabella and really love it. We rent the porcini (the other magic mushroom that makes this possible) from mushroom networks and it really is very reasonably priced compared to the other limited options out there. The only flaw is it needs UDP to do solid video streaming right now which is not possible for some reason with flash video streaming. We get INCREDIBLE download speeds and file transfers but less than impressive upload speed via TCP. Its an issue that they are working on very hard. The biggest benefit to something like this is for tradeshows. Those bastards will rape you for $1,000 a day for a decent connection. We have bandwidth to spare on our own WiFi now, run skype, live broadcast, make sales, play videos etc etc while our competition spends more for internet in one day than we spend for 4 months."
- Mushroom Networks announces new wireless "Broadband Bonding" technology -- Engadget (view on Google Sidewiki)

Multiple links bonding

try to bond links from different ISP

in reference to:

"External BGP neighbors normally sit on directed connected networks.When one has multiple parallel links the a load balancing technique is to use loop back address in the configuration for the EBGP neighbor. Static routes are configured pointing to the loopback address on the far-side neighbor.I would not recommend you try to bundle links from different ISP if using over these links. You have to use the EBGP-multi-hop feature and trying to figure out the hop count to prove to be a very interesting exercise."
- Which Router will be suitable for bonding 2 or 3 Dsl cable connection? - Networking & Security (view on Google Sidewiki)

Port Android to ARM926-ej-s

I think i can try this on my SAM9261 Board.

in reference to:

"下面是一些有用的参考,希望有助于对此感兴趣的开发人员: (1)Ben “Benno” Leslie的关于andorid移植到openmoko的个人博客地址: http://benno.id.au/blog/ (2)早期宣布成功移植android到zauraus-sl-c760的详细方法描述的链接: http://euedge.com/blog/2007/12/06/google-android-runs-on-sharp-zaurus-sl-c760/ (3)后续的根据上述先行者们的工作,成功移植android到zauraus-c3000的方法: http://androidzaurus.seesaa.net/article/74237419.html (4)本文是参考下面的wiki,接合个人的实践写出来的,对原文的作者表示一下感谢: http://wiki.droiddocs.net/Compilation_of_Android_kernel"
- Android内核编译方法_嵌入式Android_Linux开发_百度空间 (view on Google Sidewiki)

Monday, January 25, 2010

P2P Streaming Process

this also applies to multiple connections between two endpoints.

in reference to:

"A streaming process can be separated into three stages that overlap in time (Figure 1): data acquisition, data delivery and data presentation. Data acquisition is the stage that determines how the streaming content is acquired, packetized and distributed for streaming. The data presentation stage represents the methods on how to buffer, assemble and render the received data. Data delivery is the process of how the stream data is transported from the source to the destination. The source, the destination and all the intermediate nodes in a streaming system participate in a topology that is constructed based on the specific system’s protocol. In a P2P streaming system, this network architecture exhibits peer-to-peer characteristics."
- Peer-to-Peer Streaming - Streaming P2P Architectures, Streaming Process, Peer-to-Peer System Operation (view on Google Sidewiki)

Tuesday, January 12, 2010

Wireless HDMI on the way

It's already on the way. Tow different kinds of solution: UWB and 802.11. The first tech is wideband but transmission distance is limited within 10 meters and the second one we have knows it before.

in reference to:

"Gefen had two different wireless solutions, one using TZero Technologies' UWB (Ultra Wideband) and another using your standard 802.11. The Gefen Wireless for HDMI Extender uses the UWB tech, operates on the 4-6 GHz frequency, and is good up to 10 meters. The rep said that they consider it an "in-room" solution so don't expect it to pipe video across your home - through the component cabinet is about as much as you can expect. According to the press release, it is good for up to 1080/24p, though the tech guy (who should know best) claimed 1080i. This probably means that it can technically do 1080/24p and not 1080/60p but in reality it will only do 1080i in most situations (since you need both a source and a display in order for 1080/24p to be usable). It also supports 5.1 multi-channel audio. It has 2 HDMI inputs, a component video input and analogue audio inputs. The component and analogue audio inputs are upconverted to HDMI (though not upscaled). The Gefen Wireless for HDMI Extender will be available this month for around $799."
- Wireless HDMI Takes Flight — Reviews and News from Audioholics (view on Google Sidewiki)

Wednesday, January 06, 2010

Byte Alignment Rule

I dont know the 16 bytes thing before -_-!

in reference to:

"General Byte Alignment Rules The following byte padding rules will generally work with most 32 bit processor. You should consult your compiler and microprocessor manuals to see if you can relax any of these rules. Single byte numbers can be aligned at any address Two byte numbers should be aligned to a two byte boundary Four byte numbers should be aligned to a four byte boundary Structures between 1 and 4 bytes of data should be padded so that the total structure is 4 bytes. Structures between 5 and 8 bytes of data should be padded so that the total structure is 8 bytes. Structures between 9 and 16 bytes of data should be padded so that the total structure is 16 bytes. Structures greater than 16 bytes should be padded to 16 byte boundary."
- Byte Alignment and Ordering in Message Definition (view on Google Sidewiki)