一般我們在寫嵌入式系統 Stand alone (Non-OS) 的程式時
如果想存取一段Physcial address
通常我們會以下面的方式來定義指標:
#define CLCDC_BASE (volatile unsigned long *) 0x10120000;
如果想要取得其值則會定義為:
#define CLCDC_R0 *((volatile unsigned long *) 0x10120000);
如此在存取CLCDC_R0值時,就是在對該Physical address做存取:
CLCDC_R0 = 123;
但如果現在在有OS的情況下
由於OS會有記憶體保護的機制
因此user space的應用程式都無法如同Stand alone的程式直接對某段Physical address做存取
至於device driver也必須使用ioremap()函式來將一段Physical address映射到一段Virtual address才能夠存取:
void * ioremap(unsigned long phys_addr, unsigned long size);
今天剛好有機會測試到這兩種方法在Linux內所會造成結果的差別...
因為VersatilePB板上的Color LCD Controller (CLCDC)
(其在VersatilePB板上的Base address為:0x1012000,Size為:64KB)
會在啟動時將記憶體某一個區段map為frame buffer來使用
而其使用的記憶體位置會存在CLCDC中的某一個register內
因為要將資料輸出到frame buffer中
因此必須先取得該register所存放frame buffer的physical address...
一開始是先使用一般嵌入式系統Stand alone (Non-OS) 程式的方式來取得該值:
static unsigned long clcdc_base = *((volatile unsigned long *) 0x10120000);
再將我要輸出的資料指定給frame_buffer變數
結果可以正常Compile
但放到QEMU所模擬的VersatilePB環境,insmod時...
就會噴出:
Unable to handle kernel paging request at virtual address 10120000
的錯誤訊息...
在搜尋一些網頁後才發現一般這樣使用在Kernel中會被視為Virtual address
但因為Kernel並沒有map這段Virtual address到某段Physical address
所以沒辦法做轉換,因此噴出錯誤訊息...
正確的使用方法應該先將此Physical address透過ioremap()函式映射到一段Virtual address
之後再對該Virtual address做存取:
static unsigned long clcdc_base = ioremap(0x10120000, 64 * 1024);
如此便可正確存取到CLCDC的registers了...
事後想想其實自己原本就有利用ioremap()來存取我們3D晶片上的registers
結果想再新增一個功能頭腦反而就轉不過來了... <囧>
不過這也算是一個還不錯的經驗...
發現原來就算是在kernel space中也是必須透過ioremap()才能存取Physcial address的...
P.S.
根據定義... ioremap()所回傳的Virtual address
是不可被直接存取,而是必須間接透過Kernel所提供的存取函式的
ex:ioread8()、ioread16()、ioread32()、iowrite8()、iowrite16()、iowrite32()、memset_io()、memcpy_fromio()、memcpy_toio() ...etc
但這次改之前OS Lab所留下來的device driver
卻發現全都是直接存取ioremap()所回傳的Virtual address
或許這不是正確的寫法?!
(不過仍然可以跑就是.....)
哪天有機會再把它改掉看看是不是也能正常使用?! XDDD
最近device driver寫得差不多了
(改人家寫的都馬寫得很快... Orz)
原本畢業論文要做效能分析的程式被中途喊卡
老闆改叫我去接學長做軟/硬體整合的工作
原先進來這個實驗室的時候就是只想focus在OS部份,不想看wave form的!!
看來這下真的是沒得選了... QQ
接下來就要開始嗑 AMBA AHB / AXI 的bus protocal spec. 哩...
或許能有這個機會接觸到平常碰不太到的硬體也是個不錯的經驗?!
希望最後不會做不出來就好... QQ
不過最好佳在的是現在老闆"有機會"放寬他的條件,大家都有機會兩年畢業了.......................... 吧?!
誠心希望這張支票最後不會跳票... (●皿●)"
2010年4月16日 星期五
2010年3月16日 星期二
Google Sites...
今天被專題生問到我畢業專題Drupal的東西
因為他們軟工也想架一個簡單賣東西的網站
好奇問了一他怎會知道我做這個
結果才發現原來他是看到我Google Sites的文章
那時候做的Portfolio被學弟無聊逛到...
真是懷念~
果然放在網路上的東西很有可能會在某一天被某人給挖出來... XDDD
倒是Portfolio都沒在更新了...
等研究所唸完可以再把東西好好給它更新一下
希望這不會是兩、三年以後的事..... QQ
想到這就想到我們大四電子商務的osCommerce!!
一門很喇賽又很歡樂的課...
當初修得還蠻快樂的說~
還讓我想到當時有個女的不知道是喝酒還是嗑藥?!
在台上一直瘋言瘋語的... 真是有趣~ XDDD
雖然osCommerce的模組化真的是很鳥...
(還要修改程式碼才能把新的模組給加上去 =M=a)
跟Drupal來說完全沒得比~
但osCommerce的確比較符合他們的需求
至少不用再去找特別的模組就可以達到他們的基本要求了...
所以最後還是推薦他們使用osCommerce
喚起我大學的回憶..... >///<
因為他們軟工也想架一個簡單賣東西的網站
好奇問了一他怎會知道我做這個
結果才發現原來他是看到我Google Sites的文章
那時候做的Portfolio被學弟無聊逛到...
真是懷念~
果然放在網路上的東西很有可能會在某一天被某人給挖出來... XDDD
倒是Portfolio都沒在更新了...
等研究所唸完可以再把東西好好給它更新一下
希望這不會是兩、三年以後的事..... QQ
想到這就想到我們大四電子商務的osCommerce!!
一門很喇賽又很歡樂的課...
當初修得還蠻快樂的說~
還讓我想到當時有個女的不知道是喝酒還是嗑藥?!
在台上一直瘋言瘋語的... 真是有趣~ XDDD
雖然osCommerce的模組化真的是很鳥...
(還要修改程式碼才能把新的模組給加上去 =M=a)
跟Drupal來說完全沒得比~
但osCommerce的確比較符合他們的需求
至少不用再去找特別的模組就可以達到他們的基本要求了...
所以最後還是推薦他們使用osCommerce
喚起我大學的回憶..... >///<
2009年8月17日 星期一
Verilog筆記...
記錄...
一些關於Verilog撰寫方面的筆記...
1. TestBench的module宣告不用宣告input port和output ports
ex:
電路設計檔的module宣告:
test.v
----------
module test (in1, in2, out); <= 有宣告所需的input和output ports
其TestBench檔的module宣告:
test_tb.v
----------
module test_tb; <= 不需要宣告test.v中所需的input和output ports
2. TestBench通常input ports會改宣告成reg型態 / output ports會改宣告成wire型態
ex:
電路設計檔的input / output ports宣告:
test.v
----------
module test (i0, i1, i2, out);
input i0, i1, i2;
output out;
reg out;
其TestBench檔的input / output ports宣告:
test_tb.v
----------
module test_tb;
reg i0, i1, i2; <= input ports改宣告成reg型態
wire out; <= output ports改宣告成wire型態
3. 這是發生在撰寫4 Bits Up-Down Counter時發生的邏輯錯誤:
4 Bits Up-Down Counter電路設計檔:
Four_Bits_Up_Down_Counter.v
----------
// 4 Bits Up-Down Counter with reset and control signal
module Four_Bits_Up_Down_Counter (control, reset, clk, out);
input control, reset, clk;
output [3:0] out;
reg [3:0] out;
always @(posedge clk)
begin
if (~reset) // When reset = 0: zero the value of out
begin
out <= 4'b0;
end
else if (control) // If control = 1: Up-count the number
begin
// Only Up-count while the number not reach 4'b1111
if (out != 4'b1111)
begin
out <= out + 1;
end
end
else // Else if control = 0: Down-count the number
begin
// Only Down-count while the number not reach 4'b0000
if (out != 4'b0000)
begin
out <= out - 1;
end
end
end
endmodule
其TestBench檔:
Four_Bits_Up_Down_Counter_tb.v
----------
// 4 Bits Up-Down Counter with reset and control signal Test Bench
module Four_Bits_Up_Down_Counter_tb;
reg control, reset, clk;
wire [3:0] out;
Four_Bits_Up_Down_Counter tb (.control(control), .reset(reset), .clk(clk), .out(out));
initial
begin
control = 1'b1;
reset = 1'b0;
clk = 1'b0;
#10 reset = 1'b1;
#500 $finish;
end
always
begin
#10 clk = !clk;
end
endmodule
其模擬出來的out都會是Unknown的訊號:
其原因在於...
當clk由負緣拉為正緣時:
always @(posedge clk)
程式才會進入下面的if / else判斷式
但由於在clk由負緣拉為正緣前:
always
begin
#10 clk = !clk;
end
reset就已經由0改設成為1了:
#5 reset = 1'b1;
也因此導致out沒有初始值 = Unknow
如此之後不論判斷式再怎麼加 / 減
其值均會為Unknown,導致錯誤的結果
解決方法:
將進入判斷式的條件多加:always @(posedge clk or negedge reset)
將reset也加入進入判斷式的條件中...
如此當reset由正緣拉為負緣時
就會一併將out初始為0000了
原本一直以為是自己Verilog有寫錯...
在問過學長後才發現原來有這麼一個隱藏的問題!!
果然有經驗的一看到就可以很快的發現問題出在哪...
2009年7月22日 星期三
µClinux核心編譯...
記錄...
因為讀書會的工作分配...新生每個人要負責嵌入式系統設計-以ARM處理器基礎之SOC平台這本書的某些章節
在讀書會的時候要提出來報告並討論
而我選擇了:
第6章 µClinux核心(Kernel) 及 第7章 µClinux設備驅動程式
這兩個章節...
因此今天就上網搜尋了一下如何編譯µClinux的核心:
(OS:Fedora 11)
µClinux定義:
µClinux就是一般所謂的作業系統
它是由Linux演變而來的
µClinux這個名稱是micro Controller Linux的簡稱
名稱代表著它是專供微控制器(micro controller)使用的Linux
(以上節錄自:嵌入式系統設計-以ARM處理器基礎之SOC平台一書)
首先要先下載µClinux的核心:http://www.uclinux.org/pub/uClinux/dist/
目前最新版是Full Source Distribution (20090618) 這個版本
不過因為本人眼殘...
把2008看成2009~
所以下載了uClinux-dist-20080808.tar.bz2這個版本...
當初還想說為啥比較舊版的字還最大?!
(而且明明2009.08.08根本就還沒到... 囧rz)
不過用哪個版本的應該都沒關係就是了~
下載好後將核心解壓縮到所要存放路徑
ex:/usr/src/uClinux-dist
另外為了編譯核心
需要使用到arm-linux-tools
(下載:arm-linux-tools-20070808.tar.gz 這個壓縮檔)
及arm-elf-tools
(下載:arm-elf-tools-20030314.sh 這個檔案)
這兩個toolchains...
將下載好的arm-linux-tools-20070808.tar.gz 這個壓所檔中:usr/local/下所有的資料夾
(arm-linux、bin、lib、libexec)
解壓縮到所要存放路徑
ex:/usr/local/arm/這個資料夾下:
cd /usr/local/
sudo mkdir arm
cd arm-linux-tools-20070808.tar.gz所在目錄
sudo tar -xvf arm-linux-tools-20070808.tar.gz /usr/local/arm
之後由於編譯µCLinu核心時需要使用到arm-linux-gcc這個指令
所以需要將/usr/local/arm/bin/這個路徑加入到$PATH環境變數中
sudo vim /etc/profile
在檔案最下面加入:
# For arm-linux-tools
PATH=/usr/local/arm/bin:$PATH
export PATH
存檔後直接使用.或是source /etc/profile便可在當下的環境中取用新設定好$PATH(若是需要永久取用,則需重新登入!!)
另外由於arm-elf-tools-20030314.sh在Fedora下執行會出現以下錯誤:
問題一:tail: cannot open '+43' for reading: No such file or directory
解決方法:
用vim,將第39行的代碼:
tail +${SKIP} ${SCRIPT} | gunzip | tar xvf -
改成如下:
tail -n +${SKIP} ${SCRIPT} | gunzip | tar xvf -
(多加 -n 參數)
問題二:gunzip: stdin: unexpected end of file
解決方法:
在arm-elf-tools-20030314.sh 最後一行加入一空行
參考網頁:點我觀看
存檔後再執行arm-elf-tools-20030314.sh:
sudo ./arm-elf-tools-20030314.sh
Toolchains都設定好後:
cd /usr/src/uClinux-dist (µCLinux Source Code所在路徑)
make menuconfig (進入文字選單設定介面)
(或是可用:make config - 純文字條列式設定介面、make xconfig - 圖形化設定介面)
在選單中選擇Vendor/Product Selection ---> 來選擇所需要的硬體平台
--- Select the Vendor you wish to target
在此選擇GDB
--- Select the Product you wish to target
在此選擇ARMulator
在選單中選擇 Kenel/Library/Defaults Selection ---> 來設定其他編譯Kernel的相關設定
(Kernel Version 在此使用:linux-2.6.x、Libc Version使用:uClibc)
都設定完成後按x
並在離開的時候選擇
完成後便可開始編譯核心,輸入:
make dep
make
若在編譯過程中出現缺少genromfs相關檔案的錯誤訊息
可以至此網頁下載:genromfs - ROM FileSystem Generation Utility
至於安裝方式就依照網頁說明安裝即可重新執行make指令編譯核心
核心編譯成功後
在images資料夾下會有以下
首先進入到µCLinux所在路徑:
cd /usr/src/uClinux-dist/
建立images資料夾中,boot.rom檔案的連結:
ln -s images/boot.rom boot.rom
arm-elf-gdb -n linux-2.6.x/linux (在此可根據所安裝的核心更換路徑)
若在此出現:
arm-elf-gdb: error while loading shared libraries: libncurses.so.4: cannot open shared object file: No such file or directory ... 的錯誤訊息時
則需在/usr/lib中建立連結到/lib/libncurses.so.5的
cd /usr/lib
ln -s ../../lib/libncurses.so.5 libncurses.so.4
另外若要執行GDB,還需要有libgtk這個Library
安裝gtk+套件:
sudo yum install gtk+
完成後再次執行:
成功執行後依照以下指令依序執行即可:
GNU gdb 5.0
Copyright 2000 Free Software Foundation, Inc.
.........
..................
This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-elf".....................
(gdb) target sim
Loaded ROM boot.rom
Loaded ROM boot.rom
Loaded ROM boot.rom
Loaded ROM boot.rom
Connected to the simulator.
(gdb) loadLoading section .text, size 0x77b84 vma 0x2000000
Loading section .rodata, size 0x8ddb vma 0x2077b84
Loading section .data, size 0x8fc8 vma 0x2080a60
Start address 0x2000000
Transfer rate: 4507960 bits in <1>
(gdb) run1>
........
........
........
到此µClinux核心編譯便告一段落...
經過一番折騰總算是把µClinux給編譯完了
(每次剛解決了一個Error可能下一秒又會再跑出另一個Error... Orz)
不過目前還不知道要怎麼在上面寫程式
也沒有評估板可以把寫好的程式porting到上面
甚至未來還有沒有機會繼續朝這領域發展都還是個未知數~
雖然聽同學和一個博班的學長說老師今年有可能會將OS這塊納入研究領域
(這也是我會選擇這間Lab的原因啊!!! >M<")
不過在老師還沒返國前一切都還是個謎...
希望以後還能有機會繼續朝這方向發展嚕~~~ XDDD
參考網頁:
uClinux™ -- Embedded Linux Microcontroller Project -- Home Page
Getting started with uClinux
歡迎來到 Jollen 的網站 :: uClinux distribution 使用教學
uClinux - Setting up the Development Environment
linux下安裝arm-linux-gcc - Linux教程
fedora 下安裝arm-elf-tools-20030314.sh 的問題-Linux
2009年7月16日 星期四
multiple target patterns
記錄...
因為我們嵌入式要用到SystemC...所以這幾天把Linux和Windows上的eclipse環境給架了一下
Linux上的很簡單
Fedora安裝的時候就可以選擇JDK和Fedora eclipse套件
(Ubuntu都還要再自己去下載,預設並沒有包在裡面可以選...?!)
而且CDT預設都已經包在裡面了...
所以連下載都不用再下載
只要把SystemC的Library給下載好
在eclipse中把Library給include進去就OK了!!
只是不知道是甚麼原因...
Fedora eclipse的"編輯介面"有點怪怪的...
像是我隨便點一下就會變成檔案更動的狀態:hello.cpp*
再點一次又變回來:hello.cpp
另外就是如果我用滑鼠選取了一段文字(反白)
再點其他地方這段文字就會自動被刪掉... =M="
這樣要是我要複製某段code到另一個地方
很容易就會因為所複製的這段文字被刪掉而出錯!!
造成編輯上的麻煩...
再加上怕未來實驗室會用到的軟體只有Windows版
所以在Windows上我也把eclipse的環境給架了起來
但Windows就比Linux麻煩多了
不但要重新下載CDT...
還要再多下載Cygwin或MinGW
(不過因為我找到的文件是用Cygwin,所以最後選擇了Cygwin...)
但沒想到CDT在Cygwin上有Bug!!
每次在Build Project的時候都會出現:multiple target patterns 的錯誤訊息
Google了一下發現是CDT自己的問題...
點我觀看1
點我觀看2
原來是CDT沒有將Windows格式的路徑 (ex:C:\hello)
轉成Cygwin格式的路徑 (ex:/cygdrive/c/hello)
在eclipse的Project Explorer中都可以看到SystemC include的路徑都是:
C:/systemc-2.2.0/include (純粹只有轉成Unix格式,但Cygwin並不適用...)
所以在Build後所產生的*.d檔中的路徑都會有問題~
最後Google找到了解決方法...
點我觀看
------- Comment #11 From Doyle Rhynard 2007-01-21 18:55:15 -0400 -------
> Yes, Using make 3.80 also solved the problem for me. It seams like CDT needs
> to use quoted strings in the generated .d files?
I recently stumbled upon this bug when I had to reinstall Eclipse/CDT and
Cygwin. After wasting a considerable amount of time trying to determine the
cause of "multiple target patterns" make error, I finally was able to come up
with a Google search that diagnosed the problem and provided a solution. That suggestion was to replace "C:\" with "\cygdrive\c\" for specifying include directories. I have found it easiest simply to edit the ".cdtbuild" file directly.
原來只要把SystemC所需要include Library的路徑由:
C:\systemc-2.2.0\include
改成:\cygdrive\c\systemc-2.2.0\include 即可
果然之後再Build Project就沒出現這個錯誤訊息了!!
沒想到這麼簡單~
但卻搞了我不少時間... QQ
不過好在問題最後是順利解決了!! ^M^"
2009年6月14日 星期日
慘痛的學費...
痛
原本要在筆電上面灌雙OS的但因為筆電一直沒來
之前一直在VMWare上一直灌失敗 (Linux→Windows)
所以自己心血來潮想說用實機來灌看看OS
該備份的資料都備份好了
該準備的安裝光碟也都燒出來了
結果竟然因為自己一時的不小心...
讓自己多年來的辛苦付諸一旦!!
(圖片為Fedora 9的安裝畫面,來源為:http://0rz.tw/ZBrGB)
因為用VMWare在跑的時候硬碟一開始一定都是unreadable的
所以多次用下來導致我每次都很順手的就直接點了YES下去
偏偏很衰小的是Fedora 11安裝的時候竟然抓到的是我第二顆的硬碟(sdb)
在沒有察覺的情況下...
我親手點了YES,把自己多年來的辛苦給全部洗掉!!
之後察覺不對靜,所以點了下一步後就馬上離開安裝程序了
但....
一切為時已晚!!
所有多年來的音樂、MV、作業、程式碼、報告、系統軟體、系學會的資料.......
太多太多的東西全部都被洗掉了!!
(因為這顆就是我的備份碟...... QQ)
不過讓我最不解的是為什麼它會抓到的是我第二顆的硬碟,而不是第一顆... =M=a
而且我還有第三顆硬碟(sdc) (不過裡面只有存日劇、電影...etc)
為什麼就偏偏抓到我最重要的那一顆!!
之後不管是用TestDisk、spfdisk、FinalData...
完全救不回我原本的資料...
(磁區都是未規劃,FinalData沒辦法讀取,要讀取就先必須格式化!!)
而且昨天的時間幾乎都花在重灌...
因為先灌Linux,再灌Windows
比先灌Windows,再灌Linux稍微複雜一點
由於Windows讀不到Linux的檔案格式
必須先從Linux分割好後,再用mkntfs把那個磁區格式化成NTFS格式
而且Vista還必須再多一點設定
但在我灌好Linux後...
不管我用Linux內的fdisk+mkntfs、spfdisk或是Vista安裝程式的diskpart來新增一個新的磁區
Vista就是讀不到我切的那塊!!
在安裝的時候一直出現Exception:請確定您的安裝來源...
在多次的Trail & Error後
最後只好放棄先用Vista分割好兩塊磁區
灌好後再灌Linux上去
一整天的時間幾乎都花在這上面... QQ
事後跟小胖討論後發覺可能是因為自己在灌Linux的時候分割了太多的磁區
(/,/boot,swap,/home,/var)
把Primary分割區的4個Quota都給用完了
所以再切割新的磁區都只能選擇Logical分割區
但Windows一定得灌在Primary分割區
所以才導致一直抓不到分割區的狀況發生?!
或許下次可以等筆電來後再試試看?! XDDD
不管怎樣...
逝去的資料不會復返
一切都得重新來過......
雖然這些資料說重要也不是到非常重要的程度
大部份的人大概也都沒在好好保留這些東西的...
但說無所謂又非真的無所謂!!
好歹也是自己多年來的珍藏
竟然因為自己一時的不小心把資料給全毀了!!
(還不是因為硬碟壞掉這種無法避免的原因... QQ)
多少還是會感到有點心痛... >M<"
只能說這次的經驗就當作自己在學習過程中的學費+慘痛的體悟...
因為這個緣故也讓我多看了一些相關的資料...
但下次自己在弄的時候真的是得小心點才是~ Orz
2009年5月30日 星期六
wire v.s. reg...
記錄...
轉載自網路:簡單來說硬體描述語言有兩種用途:1. 仿真,2. 綜合
對於wire和reg,也要從這兩個角度來考慮:
--------------------------------------------------------------------------------------------
從仿真的角度來說,HDL語言面對的是編譯器 (如Modelsim等),相當於軟體思路
這時:
wire對應於連續賦值,如assign
reg對應於過程賦值,如always、initial
--------------------------------------------------------------------------------------------
從綜合的角度來說,HDL語言面對的是綜合器 (如DC等),要從電路的角度來考慮。
這時:
1. wire變數綜合出來一般是一根導線;
2. reg變數在always區塊中有兩種情況:
(1). always後是 (a or b or c) 型式的,也就是不帶Clock Edge的
綜合出來還是組合邏輯電路 (Combinational Logic)
(2). always後是 (posedge clk) 型式的,也就是帶Clock Edge的
綜合出來一般是循序邏輯電路 (Sequential Logic),會包含觸發器 (Flip-Flop)
在設計中:
1. 輸入信號一般來說你是不知道上一級是暫存器輸出還是組合邏輯輸出
=> 那麼對於本級來說就是一根導線,也就是wire型
2. 而輸出信號則由你自己來決定是組合邏輯輸出還是暫存器輸出
=> wire型、reg型都可以
3. 但一般的,整個設計的外部輸出 (即最頂層module的輸出),要求是暫存器輸出
=> 也就是reg型,較穩定、扇出能力也較好
以上轉載自此
--------------------------------------------------------------------------------------------
大體上來說wire和reg都類似於C/C++的變數
但若此變數要放在:
begin...end內,該變數須使用reg
begin...end外,則該變數須使用wire
另外使用wire時,須搭配assign;reg則不必
input、ouput、inout預設值都是wire
若wire和reg用錯地方,compiler都會提醒,所以不必太擔心
一個很重要的觀念:
在Verilog中使用reg,並不表示合成後就是暫存器(register)
1. 若在組合邏輯電路 (Combinational Logic)中使用reg,合成後仍只是net
2. 在循序邏輯電路 (Sequential Logic)中使用reg,合成後才會以flip-flop型式表示成暫存器(register)
以上轉載自此
2009年5月29日 星期五
osCommerce 05/29更新...
osCommerce
新增了:2gether_discount_full 的module...合購某些商品可享有95折(5% OFF)的優惠!!
各位如果想測試的話可以在一登入的首頁點選特價商品左上角的:
技嘉 GV-N250OC-1GI 高效能顯示卡
我有設定它和金士頓 DDRII 800 2GB 桌上型記憶體
合購可以享有95折(5% OFF)的優惠...
最後就請各位再多多測試看看有沒有需要修改的地方吧...
osCommerce前台網頁
osCommerce後台網頁
2009年5月28日 星期四
osCommerce商品已上架...
osCommerce
我今天已經把Eric傳給我的商品全部上架到我們osCommerce的網站上了...價格的部份我是自己隨便訂的
還挑了幾個商品做了特價的優惠...
另外由於我覺得如果特價商品的訊息只有在右側的區塊出現有點太不明顯
所以我還修改了首頁的Codes:加入了特價商品的中間區塊
(原本只有新進商品...)
所以現在只要一登入首頁就可以看到特價商品和新進商品的資訊了...
最後要請各位組員們幫幾個忙:
1. 麻煩每個人都去註冊一個帳號
隨便買個幾樣東西
衝一下我們我網站的訂單數
可以的話也順便對幾個商品做個評論...
2. 麻煩哨子在這個週末假期將我們網站的Logo設計好傳給我,以便我上載...
3. 麻煩各位測試看看有沒有需要修改的部份
ex:出貨方式、付款方式...etc
這些其實都是可能影響到我們企劃書的內容的
所以之前我才跟小安和宣筑要了我們的企劃書來看看我網站是否有需要修改的地方
各位用一用如果覺得哪邊有需要修改的部份可以跟我說一下
或是可以自己登入後台頁面做修改...
後台管理的帳號、密碼忘了的話也可以來問我!!
原則上我網站的部份如果沒有特別需求
我就維持現在這樣不做任何更動了...
(除了各位買了東西後我會確認訂單外...etc)
投影片的部份就麻煩你們先做個大概後再傳給我
我再把我架站過程的部份加入...
謝謝各位 && 端午節快樂!! ^__^
osCommerce前台網頁
osCommerce後台網頁
2009年5月27日 星期三
論文規劃計算機
GO!
Starting on: 9/1/2009Ending on: 6/30/2011
There are 666 days to complete the assignment.
我的結果
----------------------------------
之前有看到一個可以幫你規劃研究所進度的網站
只要你輸入你計畫開始的時間
和你預定結束的時間
它就會大概的幫你規劃好你每個階段所應完成的事情
點進去每個項目都還可以有更詳細的說明...
雖然只是個大方向
內容也很籠統...
不過還是可以了解一下寫論文的大概流程?! XDDD
有興趣的人可以去玩玩:Dissertation and Thesis Calculator
訂閱:
文章 (Atom)



