打印
[项目合作]

项目开发合作,限上海地区

[复制链接]
4794|35
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Simon21ic|  楼主 | 2014-5-30 10:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
价格:1 元
目前我在规划一个产品,技术部分评估了差不多了,产品以后会需要一直维护,所以想找个人合作,对能力要求比较高,涉及到的技术,我先简单列举一下:
1. USB主从机协议栈,以及各种USB设备的类驱动,无操作系统
    这个我们正在处理
2. 能够分析一些USB设备的通信协议
3. 熟悉PC平台的跨系统的GUI开发
    推荐QT
4. TCPIP协议栈,运行在wifi AP设备上,无操作系统
    需要丛linux的驱动移植
5. 基于嵌入式系统的网页服务器,以及动态网页生成,无操作系统

上海提供开发场地和开发设备,量产后,每个月提供提成,但是产品需要一直维护
联系QQ: 4720020

相关帖子

沙发
lhtzyn777| | 2014-5-30 19:45 | 只看该作者
各种USB设备的类驱动,无操作系统
单单这一条,就已经很困难了。类驱动太多了。
不跑操作系统,这个项目难度系数极大。

使用特权

评论回复
板凳
dongshuangrui10| | 2014-5-31 18:02 | 只看该作者
关注一下,呵呵!

使用特权

评论回复
地板
Simon21ic|  楼主 | 2014-6-1 14:44 | 只看该作者
无操作系统的USB OHCI很困难吗?
我们正在准备自己先处理这个部分,OHCI协议和代码都看了,没你想的这么难

使用特权

评论回复
5
mmuuss586| | 2014-6-1 17:14 | 只看该作者

包给上海庆科或上海汉枫好了

使用特权

评论回复
6
天师猫神| | 2014-6-1 20:06 | 只看该作者
USB主从机协议栈,以及各种USB设备的类驱动,无操作系统
想法很好,,但是实际估计不可能实现

使用特权

评论回复
7
Simon21ic|  楼主 | 2014-6-2 12:29 | 只看该作者
本帖最后由 Simon21ic 于 2014-6-2 12:30 编辑

外包个项目合作而已,有必要怎么激动?
节后会拜访一下开发方,不出意外,最晚下下周签合同开发。

使用特权

评论回复
8
kosy| | 2014-6-2 15:02 | 只看该作者
这个我会,做过多个,包括OHCI和EHCI,有意可详谈。

使用特权

评论回复
9
Simon21ic|  楼主 | 2014-6-2 18:25 | 只看该作者
kosy 发表于 2014-6-2 15:02
这个我会,做过多个,包括OHCI和EHCI,有意可详谈。

我们目前使用的是OHCI,当然,OHCI只是项目的一小部分,代码构架我已经大致弄好了
这个项目也可以拆分外包。

使用特权

评论回复
10
Simon21ic|  楼主 | 2014-6-2 18:28 | 只看该作者
wgj_king 发表于 2014-6-2 13:04
印象中楼主是不是以前招过人啊,貌似待遇很好的样子吧,是在松江吗?
如果是记错了,那我就是来打酱油的, ...

招过,只是不知道我提供的待遇是不是很好
之前确实有过一个来上班一个月,初始工资1W,硬件部分还行,软件的话,基本完全还没入门。
现在不会简单的开高工资希望能够招到满意的人了,我们的要求确实不低,现在在自己培养。

使用特权

评论回复
11
Simon21ic|  楼主 | 2014-6-2 19:02 | 只看该作者
本帖最后由 Simon21ic 于 2014-6-2 19:05 编辑

OHCI开发要求:
1. 使用VSF构架,以及我定义的面向对象的C语言方式
2. 系统使用前后台+轮询机制,如果可以,尽量不使用中断
3. 构架上,分为vsfusbh和vsfohci,vsfusbh为USB主机类,对应实际硬件上的一个USB主机,提供URB接口给用户层代码和设备驱动层代码。
    vsfohci提供了一个struct vsfusbh_hostdrv_t ohci_drv;这个是ohci的驱动,vsfusbh里需要设置实际的USB接口驱动,目前只需要支持OHCI。

随便列举一些结构定义,实际开发的时候,还需要完善:
URB结构:
struct vsfusbh_urb_t
{
        struct vsfusbh_device_t *device;
        uint8_t ep;
        uint8_t dir;
        void *param;
        
        struct vsfusbh_ctrl_request_t request;
        struct vsf_transaction_buffer_t tbuffer;
        
        struct
        {
                // data_io is used to get/set data if tbuffer.buffer.buffer is NULL
                vsf_err_t (*data_io)(struct vsfusbh_urb_t *urb);
                void (*on_COMPLETE)(struct vsfusbh_urb_t *urb);
        } callback;
        
        bool completed;
        vsf_err_t err;
        struct sllist list;
};

USB主机接口驱动结构:
struct vsfusbh_hostdrv_t
{
        vsf_err_t (*init)(void* hostdrv_param);
        vsf_err_t (*fini)(void* hostdrv_param);
        vsf_err_t (*suspend)(void* hostdrv_param);
        vsf_err_t (*resume)(void* hostdrv_param);
        vsf_err_t (*poll)(void* hostdrv_param);
        vsf_err_t (*submit_urb)(void *hostdrv_param, struct vsfusbh_urb_t *urb);
};

USB主机类:
struct vsfusbh_t
{
        void* hostdrv_param;
        const struct vsfusbh_hostdrv_t *hostdrv;
        
        // private
        struct vsfusbh_class_driver_t *driver_list;                // driver_list can share
        struct vsfusbh_device_t *device_list;
        uint8_t avail_address;                                                        // used to define the current usb device address
        
        bool newdev;
};

vsf_err_t vsfusbh_init(struct vsfusbh_t *host);
vsf_err_t vsfusbh_fini(struct vsfusbh_t *host);
vsf_err_t vsfusbh_poll(struct vsfusbh_t *host);
vsf_err_t vsfusbh_usbmit_urb(struct vsfusbh_t *host, struct vsfusbh_urb_t *urb);
vsf_err_t vsfusbh_suspend(struct vsfusbh_t *host);
vsf_err_t vsfusbh_resume(struct vsfusbh_t *host);

void* vsfusbh_malloc(uint32_t size);
void vsfusbh_free(void *buffer);

vsf_err_t vsfohci_register_driver(struct vsfohci_driver_t **driver_list,
                                    struct vsfohci_driver_t *driver);
vsf_err_t vsfohci_register_device(struct vsfusbh_t *host,
                                    struct vsfohci_driver_t *driver);

OHCI的一些结构:
struct vsfohci_t
{
        struct
        {
                uint32_t (*read_reg)(uint32_t offset);
                void (*write_reg)(uint32_t offset, uint32_t value);
                struct vsfohci_reg_t *reg_base;
        } drv;
        
        // hcca MUST be aligned to 256-byte boundary
        struct vsfohci_hcca_t *hcca;
        
        uint32_t revision;
        
        // ED
        struct vsohci_ed_t *ed_rm_list;
        struct vsohci_ed_t *ed_bulktail;
        struct vsohci_ed_t *ed_controltail;
        struct vsohci_ed_t *ed_isotail;
};

一些示例代码:
static uin32_t vsfohci_read_reg(struct vsfohci_t *ohci, uint32_t reg)
{
        if (ohci->drv.read_reg)
        {
                return ohci->drv.read_reg(reg);
        }
        else
        {
                return ohci->drv.reg_base[reg];
        }
}

static void vsfohci_write_reg(struct vsfohci_t *ohci, uint32_t reg,
                                                                uint32_t value)
{
        if (ohci->drv.write_reg)
        {
                ohci->drv.write_reg(reg);
        }
        else
        {
                ohci->drv.reg_base[reg] = value;
        }
}

static vsf_err_t vsfohci_init(void *param)
{
        struct vsfohci_t *ohci = (struct vsfohci_t *)param;
        
        memset(ohci->hcca, 0, sizeof(struct vsfohci_hcca_t));
        
        ohci->revision = vsfohci_read_reg(ohci, OHCI_REGIDX_HcRevision);
        
}

static vsf_err_t vsfohci_poll(void *param)
{
        struct vsfohci_t *ohci = (struct vsfohci_t *)param;
        uint32_t intf;
        
        intf = vsfohci_read_reg(ohci, OHCI_REGIDX_HcInterruptStatus);
        
        // When the HC reaches the end of a frame and its deferred interrupt
        // register is 0, it  writes the current value of its HcDoneHead to this
        // location and generates an interrupt if interrupts are enabled.  This
        // location is not written by the HC again until software clears the WD
        // bit in the HcInterruptStatus register.
        // The LSb of this entry is set to 1 to indicate whether an unmasked
        // HcInterruptStatus was set when HccaDoneHead was written.
        if ((ohci->hcca->HccaDoneHead != 0) && !(ohci->hcca->HccaDoneHead & 1))
        {
                intf = OHCI_INTF_WDH;
        }
}

当然,大部分东西都还没有完成。
我没有什么OHCI和USB主机接口的开发经验,这个只是更具这两天看的文档和代码做的东西。
希望多提一些建议。

使用特权

评论回复
12
icecut| | 2014-6-2 19:09 | 只看该作者
说usbhost难的,都是摸过usb的.
需要维护的项目,没法外包.谁上班时间 有空给你维护呢?

使用特权

评论回复
13
Simon21ic|  楼主 | 2014-6-2 20:01 | 只看该作者
icecut 发表于 2014-6-2 19:09
说usbhost难的,都是摸过usb的.
需要维护的项目,没法外包.谁上班时间 有空给你维护呢? ...

我一样摸过,难道还摸的不够深才觉得不难的?
既然到维护阶段了,本身工作量就不大,而且甚至可能维护费用都高于工资了

使用特权

评论回复
14
Simon21ic|  楼主 | 2014-6-2 20:23 | 只看该作者
以前移植linux的时候,别人说很难。刚开始弄FPGA的时候,别人说很难。
做一些协议栈的时候,别人说很难。不都搞定了吗。。。。
如果USB主机接口很难的话,这个可以我们来处理,我从来不怕有挑战的东西。

使用特权

评论回复
15
hjz007| | 2014-6-2 22:00 | 只看该作者
本帖最后由 hjz007 于 2014-6-2 22:12 编辑
Simon21ic 发表于 2014-6-2 20:23
以前移植linux的时候,别人说很难。刚开始弄FPGA的时候,别人说很难。
做一些协议栈的时候,别人说很难。不 ...

有本事早就自己搞定了,还弄出来包
有实力有本事,招个实习生不就好了么?
外包项目的人,本来就十有**没本事,但自以为很有本事

看上去你好像什么都会,什么都懂,其实你什么也不会,什么也不懂。
刚毕业的时候面试C语言,被人说自己不懂,心里不服气,“考什么编程,工作的时候不都可以翻书嘛,程序我没写出来就能说我不懂么?”
现在回头再看,其实就算能把程序写出来,考个80分,也未必能说自己懂C语言。
标准不一样,时代不一样
不管你懂多少,如果你的钱赚得没有比别人多,就说明你不懂。懂的人是不会只赚个平均工资成本的。
吹都没有用,我在21IC上接的项目,老板没一个有实力的。
有实力的,我们也挨不上,也不会在21IC发外包。
发包者,大都是人品也不怎么样的,平时不注意积累技术朋友,需要的时候身边也没有朋友可以帮忙...

使用特权

评论回复
16
Simon21ic|  楼主 | 2014-6-2 22:57 | 只看该作者
本帖最后由 Simon21ic 于 2014-6-2 22:58 编辑

呵呵,楼上显然受过刺激,谁脑子进水,我就不评论了
我没什么实力,至少开的Audi,不会和你计较
我外包我的,你继续骂你的吧

使用特权

评论回复
17
hjz007| | 2014-6-2 23:27 | 只看该作者
本帖最后由 hjz007 于 2014-6-2 23:40 编辑
Simon21ic 发表于 2014-6-2 22:57
呵呵,楼上显然受过刺激,谁脑子进水,我就不评论了
我没什么实力,至少开的Audi,不会和你计较
我外包我的 ...

我对在21IC上乱发外包,蛊惑没社会经验工程师的行为一直都是绝不客气。
对于那些给生活上暂时处于窘困中的工程师挖坑的黑心所谓老板,从来都是绝不客气,绝不饶人。
一身正气,为年轻人清肃一个好的职业心态,不要被别奸诈之人利用。
都骂人骂了几年了,人渣一日不除,我还要继续骂下去

我时刻提醒各位工程师,很多外包都是一个坑,就算没坑你钱,但坑你的可能是风险,总之,你最后得到的比正常打工赚的要少而又少。
一个小技术地雷,耗你半年,半年里可能你只写了300行代码...
写代码不需要技术,技术不是用来写多少行代码的...

开什么车不能说明任何东西,我华为的同事,单股票就100万股,现在还没有车,我老师年收入2000万,也没买车。
而很多混头,开豪车一大把...很多人就是因为没有实力,一定要买个像样的车来充门面,比如做销售的小个体工商户小老板什么的,或者一些通过虚假注资的小公司(比如50万,100万注册资金)...

总之,各位,小心为上...

使用特权

评论回复
18
Simon21ic|  楼主 | 2014-6-2 23:40 | 只看该作者
hjz007 发表于 2014-6-2 23:27
我对在21IC上乱发外包,蛊惑没社会经验工程师的行为一直都是绝不客气。
对于那些给生活上暂时处于窘困中的 ...

好的,说得很有道理
我只是想,能闲成这样,想必也是赚不到什么钱的人吧

使用特权

评论回复
19
hjz007| | 2014-6-2 23:45 | 只看该作者
本帖最后由 hjz007 于 2014-6-3 00:01 编辑
Simon21ic 发表于 2014-6-2 23:40
好的,说得很有道理
我只是想,能闲成这样,想必也是赚不到什么钱的人吧 ...

告诉你也没关系,我赚得不多,技术收入一年30~40万左右而已,一年有一半以上的时间没事干,和以前打工赚差不多,和打工比,自己做事就是这个优点,同时有个潜在的奔头。
店面出租之类的我就不说了。
而且,我驾*10年了,也没买车。

重要的是,我能把不安好心的人识别出来,搅浑得他不兴风做浪祸害人,我的责任就尽到了
至于什么攻击他人之类的,我并无此兴趣...

使用特权

评论回复
20
Simon21ic|  楼主 | 2014-6-2 23:54 | 只看该作者
hjz007 发表于 2014-6-2 23:45
告诉你也没关系,我赚得不多,技术收入一年30~40万左右而已,一年有一半以上的时间没事干,和以前打工赚 ...

嗯,真厉害啊
原来一年有一半时间闲着蛋疼,呵呵

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:www.versaloon.com --- under construction

266

主题

2597

帖子

104

粉丝